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
- ThreadStaticAttribute.cs
- TextParaClient.cs
- ParserExtension.cs
- MULTI_QI.cs
- SecurityContextKeyIdentifierClause.cs
- HttpServerChannel.cs
- HttpPostedFileBase.cs
- ItemsPresenter.cs
- ServiceNameElement.cs
- DiagnosticsConfigurationHandler.cs
- AsyncOperationManager.cs
- XpsS0ValidatingLoader.cs
- RequestQueue.cs
- NumberSubstitution.cs
- LessThan.cs
- PathSegmentCollection.cs
- AlphaSortedEnumConverter.cs
- CaseExpr.cs
- RegexMatch.cs
- TextEditorParagraphs.cs
- MetadataImporter.cs
- TextEditorThreadLocalStore.cs
- SoapSchemaImporter.cs
- ClientEventManager.cs
- ChangePassword.cs
- ValidationErrorCollection.cs
- SmiTypedGetterSetter.cs
- ManipulationDevice.cs
- MouseGestureConverter.cs
- GridSplitter.cs
- EventWaitHandleSecurity.cs
- XmlConvert.cs
- ProcessModelSection.cs
- InvokeMethodActivityDesigner.cs
- SecurityContextCookieSerializer.cs
- WinInetCache.cs
- LayoutInformation.cs
- ObsoleteAttribute.cs
- NamespaceExpr.cs
- TableLayoutStyleCollection.cs
- SendKeys.cs
- oledbconnectionstring.cs
- CuspData.cs
- TypeSystemProvider.cs
- ExtenderControl.cs
- XsdValidatingReader.cs
- FontCollection.cs
- Html32TextWriter.cs
- ResourceSet.cs
- XsdDateTime.cs
- _HelperAsyncResults.cs
- AddressAlreadyInUseException.cs
- TextProperties.cs
- FileCodeGroup.cs
- BindingCollection.cs
- IUnknownConstantAttribute.cs
- UnknownBitmapEncoder.cs
- SynchronizationContext.cs
- SqlErrorCollection.cs
- MemberAccessException.cs
- MergeLocalizationDirectives.cs
- MulticastOption.cs
- WindowsListViewItemStartMenu.cs
- XamlFigureLengthSerializer.cs
- PaperSource.cs
- CompositeKey.cs
- printdlgexmarshaler.cs
- CodeTypeReferenceExpression.cs
- ParameterSubsegment.cs
- ObjectParameterCollection.cs
- DateTimeFormat.cs
- TrackingDataItemValue.cs
- TdsRecordBufferSetter.cs
- EventEntry.cs
- GridViewAutomationPeer.cs
- Method.cs
- SignatureConfirmationElement.cs
- X509CertificateValidationMode.cs
- ToolStripArrowRenderEventArgs.cs
- FastPropertyAccessor.cs
- Section.cs
- SQLDecimalStorage.cs
- HttpVersion.cs
- DocumentXmlWriter.cs
- ErrorsHelper.cs
- Pair.cs
- CqlBlock.cs
- Message.cs
- TriggerActionCollection.cs
- SiteMapPath.cs
- CodeAttributeDeclarationCollection.cs
- SmtpFailedRecipientsException.cs
- CompiledIdentityConstraint.cs
- DrawingGroupDrawingContext.cs
- LazyTextWriterCreator.cs
- ObjectReaderCompiler.cs
- EnumType.cs
- ToolStripAdornerWindowService.cs
- ConfigXmlWhitespace.cs
- DataGridViewBindingCompleteEventArgs.cs