Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / Model / XamlUtilities.cs / 1305376 / XamlUtilities.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation.Model { using System; using System.Collections; using System.ComponentModel; using System.Reflection; internal static class XamlUtilities { static Hashtable converterCache; static object converterCacheSyncObject = new object(); public static TypeConverter GetConverter(Type itemType) { TypeConverter converter = TypeDescriptor.GetConverter(itemType); if (converter == null || converter.GetType() == typeof(TypeConverter)) { // We got an invalid converter. WPF will do this if the converter // is internal, but we use internal converters all over the place // at design time. Detect this and build the converter ourselves. if (converterCache != null) { converter = (TypeConverter)converterCache[itemType]; if (converter != null) { return converter; } } AttributeCollection attrs = TypeDescriptor.GetAttributes(itemType); TypeConverterAttribute tca = attrs[typeof(TypeConverterAttribute)] as TypeConverterAttribute; if (tca != null && tca.ConverterTypeName != null) { Type type = Type.GetType(tca.ConverterTypeName); if (type != null && !type.IsPublic && typeof(TypeConverter).IsAssignableFrom(type)) { ConstructorInfo ctor = type.GetConstructor(new Type[] { typeof(Type) }); if (ctor != null) { converter = (TypeConverter)ctor.Invoke(new object[] { itemType }); } else { converter = (TypeConverter)Activator.CreateInstance(type); } lock (converterCacheSyncObject) { if (converterCache == null) { converterCache = new Hashtable(); // Listen to type changes and clear the cache. // This allows new metadata tables to be installed TypeDescriptor.Refreshed += delegate(RefreshEventArgs args) { converterCache.Remove(args.TypeChanged); }; } converterCache[itemType] = converter; } } } } return converter; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NoneExcludedImageIndexConverter.cs
- DoubleLink.cs
- XmlDataImplementation.cs
- SoapIncludeAttribute.cs
- DataPagerFieldCollection.cs
- ThreadAttributes.cs
- ReturnType.cs
- Adorner.cs
- ProcessHostConfigUtils.cs
- EUCJPEncoding.cs
- CustomWebEventKey.cs
- WorkflowInspectionServices.cs
- Hash.cs
- Regex.cs
- PrimitiveXmlSerializers.cs
- UpdateRecord.cs
- SchemaSetCompiler.cs
- ItemContainerGenerator.cs
- DbProviderFactoriesConfigurationHandler.cs
- VectorCollection.cs
- MimeTextImporter.cs
- OleDbMetaDataFactory.cs
- InvalidOperationException.cs
- BigInt.cs
- OdbcError.cs
- FlowDocumentReaderAutomationPeer.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- UriGenerator.cs
- ToolStripManager.cs
- ColorConverter.cs
- XmlSchemaGroupRef.cs
- UnsafeNativeMethodsMilCoreApi.cs
- EmbeddedMailObject.cs
- _Connection.cs
- CodeTypeDeclarationCollection.cs
- Substitution.cs
- XamlSerializerUtil.cs
- QilStrConcat.cs
- ToolStripItem.cs
- EnumerableRowCollection.cs
- TextBoxAutomationPeer.cs
- HostExecutionContextManager.cs
- XmlSchemaImport.cs
- Typeface.cs
- TcpChannelHelper.cs
- StaticTextPointer.cs
- BaseCollection.cs
- PropertyDescriptorCollection.cs
- CultureInfoConverter.cs
- RoleGroup.cs
- Decoder.cs
- TranslateTransform.cs
- ModuleBuilderData.cs
- WebPartChrome.cs
- AppDomainProtocolHandler.cs
- EntityDataSourceView.cs
- PerformanceCounter.cs
- RegisteredArrayDeclaration.cs
- RtfControls.cs
- XamlFrame.cs
- CacheHelper.cs
- HttpCapabilitiesBase.cs
- ICollection.cs
- ExtendedProtectionPolicy.cs
- SqlConnectionManager.cs
- Int16Storage.cs
- ResourcePool.cs
- XdrBuilder.cs
- PreviewKeyDownEventArgs.cs
- BackgroundWorker.cs
- XmlSchemaGroupRef.cs
- ProcessHost.cs
- PersianCalendar.cs
- SafeLocalMemHandle.cs
- DrawingGroupDrawingContext.cs
- GZipStream.cs
- ProvidePropertyAttribute.cs
- TypeDependencyAttribute.cs
- RoleServiceManager.cs
- LineSegment.cs
- NavigationPropertyEmitter.cs
- AuthenticationModuleElementCollection.cs
- SharedUtils.cs
- ConstraintManager.cs
- PnrpPermission.cs
- PartialCachingControl.cs
- NativeObjectSecurity.cs
- EdmProperty.cs
- XmlNamespaceDeclarationsAttribute.cs
- WebControlsSection.cs
- SubMenuStyleCollection.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- PageSettings.cs
- EventProviderClassic.cs
- XmlWriter.cs
- VirtualPath.cs
- ZipIORawDataFileBlock.cs
- XamlFrame.cs
- XmlSerializerOperationBehavior.cs
- XmlQueryContext.cs