Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Markup / TypeExtension.cs / 1 / TypeExtension.cs
/****************************************************************************\ * * File: TypeExtension.cs * * Class for Xaml markup extension for a Type reference * * Copyright (C) 2004 by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.Windows; using System.ComponentModel; namespace System.Windows.Markup { ////// Class for Xaml markup extension for a Type reference. /// [TypeConverter(typeof(TypeExtensionConverter))] [MarkupExtensionReturnType(typeof(Type))] public class TypeExtension : MarkupExtension { ////// Default Constructor /// public TypeExtension() { } ////// Constructor that takes a type name /// public TypeExtension(string typeName) { if (typeName == null) { throw new ArgumentNullException("typeName"); } _typeName = typeName; } ////// Constructor that takes a type /// public TypeExtension(Type type) { if (type == null) { throw new ArgumentNullException("type"); } _type = type; // we would like to set TypeName here, but we can't because we can't resolve its namespace } ////// Return an object that should be set on the targetObject's targetProperty /// for this markup extension. TypeExtension resolves a string into a Type /// and returns it. /// /// Object that can provide services for the markup extension. ////// The object to set on this property. /// public override object ProvideValue(IServiceProvider serviceProvider) { // If a type was supplied, no context nor type name are needed if (_type != null) { return _type; } // Validate the initialization if (_typeName == null) { throw new InvalidOperationException(SR.Get(SRID.MarkupExtensionTypeName)); } // Get the IXamlTypeResolver from the service provider IXamlTypeResolver xamlTypeResolver = serviceProvider.GetService(typeof(IXamlTypeResolver)) as IXamlTypeResolver; if( xamlTypeResolver == null ) { throw new InvalidOperationException( SR.Get(SRID.MarkupExtensionNoContext, GetType().Name, "IXamlTypeResolver" )); } // Get the type _type = xamlTypeResolver.Resolve(_typeName); if (_type == null) { throw new InvalidOperationException(SR.Get(SRID.MarkupExtensionTypeNameBad, _typeName)); } return _type; // we could cash the result of type as _type, but it might cause some problems, and in theory we shouldn't need to } ////// The typename represented by this markup extension. The name has the format /// Prefix:Typename, where Prefix is the xml namespace prefix for this type. /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public string TypeName { get { return _typeName; } set { if (value == null) { throw new ArgumentNullException("value"); } _typeName = value; _type = null; // so that ProvideValue does not use the existing type } } ////// The type represented by this markup extension. /// [DefaultValue(null)] [ConstructorArgument("type")] public Type Type { get { return _type; } set { if (value == null) { throw new ArgumentNullException("value"); } _type = value; _typeName = null; // so that ProvideValue does not use the existing typeName } } private string _typeName; private Type _type; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ArgumentValueSerializer.cs
- IIS7UserPrincipal.cs
- BitVector32.cs
- TemplateControl.cs
- ControllableStoryboardAction.cs
- IteratorFilter.cs
- TransactionChannel.cs
- QuadTree.cs
- counter.cs
- EncoderBestFitFallback.cs
- Perspective.cs
- WorkflowNamespace.cs
- CellCreator.cs
- NetStream.cs
- ExtendedPropertiesHandler.cs
- HttpFileCollection.cs
- SoapInteropTypes.cs
- FieldDescriptor.cs
- CatalogPartCollection.cs
- BmpBitmapDecoder.cs
- CharAnimationBase.cs
- ParameterCollection.cs
- Misc.cs
- URLIdentityPermission.cs
- ValueCollectionParameterReader.cs
- LateBoundBitmapDecoder.cs
- ByeOperationAsyncResult.cs
- OracleString.cs
- Random.cs
- StorageEndPropertyMapping.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- KeyFrames.cs
- WebPartMenuStyle.cs
- FacetValues.cs
- TableProviderWrapper.cs
- OperationPerformanceCounters.cs
- RuleSetCollection.cs
- WebBrowserContainer.cs
- GeneralTransformCollection.cs
- UnsafeNativeMethods.cs
- ApplicationTrust.cs
- Graphics.cs
- VirtualDirectoryMappingCollection.cs
- AnonymousIdentificationSection.cs
- TextEffect.cs
- ConfigurationPropertyAttribute.cs
- GridViewUpdatedEventArgs.cs
- FormatSettings.cs
- GridViewUpdatedEventArgs.cs
- WebHttpElement.cs
- TemplatePropertyEntry.cs
- DoubleAnimationUsingKeyFrames.cs
- _ListenerRequestStream.cs
- SrgsGrammarCompiler.cs
- FormDesigner.cs
- CorePropertiesFilter.cs
- XXXInfos.cs
- RequiredAttributeAttribute.cs
- SiteMapNodeCollection.cs
- CustomBindingCollectionElement.cs
- WebResourceUtil.cs
- ChineseLunisolarCalendar.cs
- DrawingBrush.cs
- EmptyWorkItem.cs
- AsymmetricKeyExchangeDeformatter.cs
- PnrpPeerResolver.cs
- EntityContainer.cs
- DataGridItemAttachedStorage.cs
- SemaphoreSecurity.cs
- SymbolMethod.cs
- SqlUdtInfo.cs
- ConstructorNeedsTagAttribute.cs
- StatusBar.cs
- ServiceReflector.cs
- BitmapCodecInfo.cs
- DataViewManagerListItemTypeDescriptor.cs
- AnnouncementEventArgs.cs
- SchemaElement.cs
- InvariantComparer.cs
- JsonReaderDelegator.cs
- XappLauncher.cs
- List.cs
- BigInt.cs
- FileSystemInfo.cs
- DataGridViewButtonColumn.cs
- SynchronizedInputProviderWrapper.cs
- NativeMethodsCLR.cs
- SmiGettersStream.cs
- CodeDelegateCreateExpression.cs
- XpsPartBase.cs
- ClientScriptManager.cs
- RequestCachingSection.cs
- SyntaxCheck.cs
- PeerNameRecord.cs
- LookupNode.cs
- NavigationPropertyEmitter.cs
- PointAnimationClockResource.cs
- TraceRecord.cs
- IProvider.cs
- StorageBasedPackageProperties.cs