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
- SoapIgnoreAttribute.cs
- MbpInfo.cs
- TypeLibConverter.cs
- StringKeyFrameCollection.cs
- RecognitionEventArgs.cs
- EventManager.cs
- AvTrace.cs
- Compiler.cs
- UInt64Converter.cs
- TreeViewHitTestInfo.cs
- BaseParagraph.cs
- XmlSchemaAppInfo.cs
- MsmqIntegrationProcessProtocolHandler.cs
- Msmq4PoisonHandler.cs
- SerializationInfoEnumerator.cs
- StringFunctions.cs
- StretchValidation.cs
- DataFormats.cs
- Item.cs
- TrueReadOnlyCollection.cs
- MailMessageEventArgs.cs
- List.cs
- DataGridViewComboBoxEditingControl.cs
- ListView.cs
- IndentedTextWriter.cs
- SQLSingle.cs
- Odbc32.cs
- TextServicesLoader.cs
- MessageHeaderInfoTraceRecord.cs
- ValueConversionAttribute.cs
- ThemeConfigurationDialog.cs
- DropTarget.cs
- SiteMapNodeItemEventArgs.cs
- IPAddressCollection.cs
- ResourcePermissionBaseEntry.cs
- SecurityStateEncoder.cs
- _AutoWebProxyScriptWrapper.cs
- SafeLibraryHandle.cs
- ParameterCollection.cs
- _UriSyntax.cs
- PersonalizationProvider.cs
- Table.cs
- SafeProcessHandle.cs
- AssemblySettingAttributes.cs
- Environment.cs
- CodeIterationStatement.cs
- Parser.cs
- ViewKeyConstraint.cs
- CollectionView.cs
- HitTestDrawingContextWalker.cs
- FixedHighlight.cs
- ObjectPersistData.cs
- DataGridViewSelectedCellCollection.cs
- FrameworkReadOnlyPropertyMetadata.cs
- OutputScopeManager.cs
- NativeMethods.cs
- ResourceDescriptionAttribute.cs
- CodeExporter.cs
- SqlTriggerContext.cs
- PageCache.cs
- ISO2022Encoding.cs
- AstNode.cs
- Trustee.cs
- XmlEncApr2001.cs
- SafeFileMapViewHandle.cs
- UIHelper.cs
- querybuilder.cs
- BaseCodeDomTreeGenerator.cs
- EventSinkHelperWriter.cs
- CellParagraph.cs
- SingleSelectRootGridEntry.cs
- ConfigUtil.cs
- StrokeNodeData.cs
- ChineseLunisolarCalendar.cs
- Command.cs
- Parameter.cs
- DataGridViewRowStateChangedEventArgs.cs
- SafeCryptContextHandle.cs
- DataControlField.cs
- SByte.cs
- QilExpression.cs
- GestureRecognizer.cs
- InheritedPropertyChangedEventArgs.cs
- DataTemplateSelector.cs
- ViewBase.cs
- LambdaCompiler.Expressions.cs
- HttpStreamMessageEncoderFactory.cs
- RangeContentEnumerator.cs
- WebConfigurationHost.cs
- odbcmetadatafactory.cs
- PropertyEmitter.cs
- DataSourceControlBuilder.cs
- NamespaceExpr.cs
- RegexCapture.cs
- AutomationPatternInfo.cs
- GeometryDrawing.cs
- ArrayTypeMismatchException.cs
- FormsAuthenticationCredentials.cs
- HtmlTextArea.cs
- Events.cs