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
- MachineKeySection.cs
- ColorEditor.cs
- OuterGlowBitmapEffect.cs
- ExtensionFile.cs
- SingleStorage.cs
- RestHandler.cs
- GuidelineCollection.cs
- WinEventWrap.cs
- DataGridViewCellPaintingEventArgs.cs
- SerializationInfoEnumerator.cs
- TableLayout.cs
- OracleParameter.cs
- DetailsViewCommandEventArgs.cs
- UTF8Encoding.cs
- TranslateTransform3D.cs
- GenericAuthenticationEventArgs.cs
- TargetControlTypeAttribute.cs
- BlockCollection.cs
- Material.cs
- Point3DCollectionValueSerializer.cs
- WorkflowLayouts.cs
- Constraint.cs
- ListViewGroupItemCollection.cs
- VisemeEventArgs.cs
- WorkflowInstance.cs
- SqlBuffer.cs
- WsrmTraceRecord.cs
- FileUpload.cs
- ExtendedPropertiesHandler.cs
- XmlDocumentFieldSchema.cs
- SrgsSubset.cs
- SmiEventSink.cs
- XmlIlVisitor.cs
- GeneralTransform3DTo2D.cs
- DesignerTransaction.cs
- TrustLevelCollection.cs
- HMACRIPEMD160.cs
- KeyConstraint.cs
- ExpressionBindings.cs
- Funcletizer.cs
- AssemblyEvidenceFactory.cs
- SamlNameIdentifierClaimResource.cs
- ApplicationActivator.cs
- SrgsDocument.cs
- ControlAdapter.cs
- ApplicationTrust.cs
- AnimationClock.cs
- TypographyProperties.cs
- ObjectDataSourceFilteringEventArgs.cs
- EditorZoneBase.cs
- SourceFileBuildProvider.cs
- ScopedMessagePartSpecification.cs
- ListBox.cs
- XmlChoiceIdentifierAttribute.cs
- Tokenizer.cs
- SqlComparer.cs
- ObservableDictionary.cs
- ToolStripSeparatorRenderEventArgs.cs
- FormViewModeEventArgs.cs
- ItemMap.cs
- ImageField.cs
- XPathArrayIterator.cs
- BaseTemplateBuildProvider.cs
- OverflowException.cs
- KerberosSecurityTokenAuthenticator.cs
- DataGridViewColumnCollectionDialog.cs
- SvcMapFileLoader.cs
- RelationshipConverter.cs
- FastEncoderWindow.cs
- ObjectIDGenerator.cs
- PrintingPermissionAttribute.cs
- ClosureBinding.cs
- Int32AnimationUsingKeyFrames.cs
- TokenBasedSetEnumerator.cs
- DataGridComponentEditor.cs
- EventSinkActivity.cs
- RawStylusInputCustomData.cs
- DrawListViewItemEventArgs.cs
- StructuredTypeEmitter.cs
- LinkedResourceCollection.cs
- BulletChrome.cs
- TextFormatter.cs
- OletxEnlistment.cs
- InkCanvasSelectionAdorner.cs
- Compensation.cs
- ToolStripComboBox.cs
- SmiEventSink_Default.cs
- MetadataArtifactLoader.cs
- ReverseInheritProperty.cs
- Int32KeyFrameCollection.cs
- GiveFeedbackEvent.cs
- SqlAliasesReferenced.cs
- ReadOnlyNameValueCollection.cs
- X509IssuerSerialKeyIdentifierClause.cs
- PackageRelationship.cs
- WebDescriptionAttribute.cs
- PageThemeBuildProvider.cs
- ServiceDescriptionSerializer.cs
- ConstraintCollection.cs
- LinqDataSourceDisposeEventArgs.cs