Code:
/ 4.0 / 4.0 / 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.
//----------------------------------------------------------------
// 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
- HandleCollector.cs
- RepeaterCommandEventArgs.cs
- XmlIgnoreAttribute.cs
- AsyncCodeActivity.cs
- ConnectionOrientedTransportChannelListener.cs
- ImageInfo.cs
- _UriSyntax.cs
- UInt32.cs
- ScrollChrome.cs
- FontResourceCache.cs
- CalendarAutoFormatDialog.cs
- storagemappingitemcollection.viewdictionary.cs
- BrushConverter.cs
- FontUnit.cs
- DoubleAnimationUsingKeyFrames.cs
- StreamUpdate.cs
- GridProviderWrapper.cs
- ProtocolException.cs
- PaintEvent.cs
- TextSimpleMarkerProperties.cs
- MetadataArtifactLoaderCompositeResource.cs
- WindowsEditBox.cs
- ScrollViewer.cs
- OutOfMemoryException.cs
- MenuItem.cs
- PointAnimationUsingKeyFrames.cs
- NamespaceQuery.cs
- PkcsUtils.cs
- WinInetCache.cs
- ConstNode.cs
- ToolStripScrollButton.cs
- Icon.cs
- StylusDownEventArgs.cs
- _AuthenticationState.cs
- ScalarOps.cs
- Pen.cs
- RadioButtonBaseAdapter.cs
- SupportsEventValidationAttribute.cs
- OleDbDataAdapter.cs
- DesignerView.Commands.cs
- BinaryMethodMessage.cs
- TimeoutException.cs
- CategoryGridEntry.cs
- ConfigUtil.cs
- BitmapFrame.cs
- ObjectDataSourceMethodEventArgs.cs
- TemplateBindingExtensionConverter.cs
- MeshGeometry3D.cs
- PagesChangedEventArgs.cs
- FormatterConverter.cs
- HMACMD5.cs
- ProfileServiceManager.cs
- BlockCollection.cs
- CursorConverter.cs
- XmlSchemaAttributeGroupRef.cs
- DataSourceCacheDurationConverter.cs
- MD5Cng.cs
- NotConverter.cs
- WebSysDefaultValueAttribute.cs
- DrawingVisualDrawingContext.cs
- DbBuffer.cs
- Expression.cs
- XsltArgumentList.cs
- TaiwanLunisolarCalendar.cs
- SoundPlayerAction.cs
- KeyNotFoundException.cs
- TextTreeDeleteContentUndoUnit.cs
- Transform3DCollection.cs
- ComponentEditorForm.cs
- ColumnWidthChangingEvent.cs
- TextTrailingCharacterEllipsis.cs
- SplineKeyFrames.cs
- GraphicsContext.cs
- recordstatescratchpad.cs
- ClientBuildManager.cs
- PersistenceContextEnlistment.cs
- SqlRowUpdatedEvent.cs
- ApplyHostConfigurationBehavior.cs
- XmlTextWriter.cs
- VirtualPathUtility.cs
- PartBasedPackageProperties.cs
- CompilationSection.cs
- Base64Encoding.cs
- UserNamePasswordClientCredential.cs
- UserControlBuildProvider.cs
- HtmlInputPassword.cs
- Quad.cs
- DataTemplateKey.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- StylusOverProperty.cs
- DataGridItemEventArgs.cs
- TypeUsageBuilder.cs
- VectorCollectionConverter.cs
- WebBrowserHelper.cs
- ContractUtils.cs
- BrushMappingModeValidation.cs
- SafeHandles.cs
- CompiledELinqQueryState.cs
- SQLInt64Storage.cs
- PageThemeParser.cs