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
- NativeWrapper.cs
- SHA256.cs
- Schema.cs
- ZipIOModeEnforcingStream.cs
- Int32.cs
- ObjectListCommandEventArgs.cs
- Helper.cs
- WindowExtensionMethods.cs
- InstanceKeyNotReadyException.cs
- LayoutTableCell.cs
- ClientSideQueueItem.cs
- HttpProcessUtility.cs
- ControlValuePropertyAttribute.cs
- Effect.cs
- Configuration.cs
- HttpFileCollection.cs
- FilteredDataSetHelper.cs
- cookieexception.cs
- ProcessRequestArgs.cs
- InstanceHandle.cs
- BitmapFrameDecode.cs
- Encoding.cs
- OracleTransaction.cs
- TypeDelegator.cs
- ListView.cs
- EdmComplexPropertyAttribute.cs
- GregorianCalendar.cs
- DependencyPropertyValueSerializer.cs
- CollectionChangedEventManager.cs
- DelegateSerializationHolder.cs
- ComboBox.cs
- TextAdaptor.cs
- KeyValueConfigurationCollection.cs
- SingleAnimationBase.cs
- MapPathBasedVirtualPathProvider.cs
- DesignTimeTemplateParser.cs
- DriveNotFoundException.cs
- GeneralTransform3D.cs
- VariableQuery.cs
- HtmlInputControl.cs
- KnownIds.cs
- IsolatedStorageFilePermission.cs
- WebBrowserEvent.cs
- AlternateViewCollection.cs
- ToolStripPanelDesigner.cs
- LayoutInformation.cs
- ExpressionBinding.cs
- ControlCollection.cs
- EventLog.cs
- VBIdentifierNameEditor.cs
- TextParagraphView.cs
- AssociatedControlConverter.cs
- XMLSyntaxException.cs
- WebPartVerbCollection.cs
- ExpressionBuilder.cs
- XmlQueryRuntime.cs
- LastQueryOperator.cs
- StringDictionary.cs
- TerminatorSinks.cs
- OracleConnectionString.cs
- BitArray.cs
- ModuleConfigurationInfo.cs
- ExpressionReplacer.cs
- DbgCompiler.cs
- URLAttribute.cs
- XmlNamespaceManager.cs
- JulianCalendar.cs
- FixedNode.cs
- UnsafeNativeMethods.cs
- TransactionState.cs
- DynamicMethod.cs
- MaskedTextBoxTextEditorDropDown.cs
- VariableQuery.cs
- PageThemeParser.cs
- Substitution.cs
- ResolveMatchesMessage11.cs
- EdmProperty.cs
- _HeaderInfo.cs
- CommandManager.cs
- PageCache.cs
- BindValidationContext.cs
- HGlobalSafeHandle.cs
- UnsafeNativeMethodsCLR.cs
- ImageListStreamer.cs
- DataServiceClientException.cs
- EntitySetBase.cs
- UndirectedGraph.cs
- SqlProviderServices.cs
- DiscoveryEndpoint.cs
- TableLayoutRowStyleCollection.cs
- Shape.cs
- InputScopeNameConverter.cs
- NotificationContext.cs
- DataContractSerializerOperationGenerator.cs
- NetCodeGroup.cs
- GrammarBuilderRuleRef.cs
- AdRotator.cs
- TablePattern.cs
- StatusBarPanel.cs
- ClassHandlersStore.cs