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
- PenThread.cs
- OutOfProcStateClientManager.cs
- BuilderInfo.cs
- DataViewManagerListItemTypeDescriptor.cs
- ProxyWebPartManager.cs
- UnsafeNativeMethods.cs
- _SslSessionsCache.cs
- SqlClientPermission.cs
- DebuggerAttributes.cs
- TemplateInstanceAttribute.cs
- IsolatedStorageException.cs
- ProvidePropertyAttribute.cs
- WindowsToolbarItemAsMenuItem.cs
- AsyncResult.cs
- DirectoryNotFoundException.cs
- BaseCollection.cs
- TextControlDesigner.cs
- DependencyPropertyConverter.cs
- AnnotationComponentChooser.cs
- wgx_exports.cs
- UnitySerializationHolder.cs
- TraceInternal.cs
- CodeExporter.cs
- webeventbuffer.cs
- SafeReversePInvokeHandle.cs
- SqlResolver.cs
- SEHException.cs
- unitconverter.cs
- SmiMetaData.cs
- ColorConvertedBitmap.cs
- MethodBuilderInstantiation.cs
- SafeLibraryHandle.cs
- Merger.cs
- DetailsViewUpdateEventArgs.cs
- ToolBarPanel.cs
- SamlAttributeStatement.cs
- BamlRecordHelper.cs
- ActivityPreviewDesigner.cs
- RootBrowserWindowProxy.cs
- SecurityChannelFaultConverter.cs
- OracleBFile.cs
- MetadataItemSerializer.cs
- ObjRef.cs
- SecurityTokenValidationException.cs
- Process.cs
- PTProvider.cs
- ItemTypeToolStripMenuItem.cs
- HtmlInputReset.cs
- InternalBufferOverflowException.cs
- HashCodeCombiner.cs
- HttpModulesSection.cs
- MethodSet.cs
- ButtonAutomationPeer.cs
- WeakHashtable.cs
- RelationshipManager.cs
- ListChangedEventArgs.cs
- XmlQuerySequence.cs
- DataListItemCollection.cs
- Token.cs
- StringConcat.cs
- TimeEnumHelper.cs
- ArgIterator.cs
- StrongName.cs
- CodeRegionDirective.cs
- WhileDesigner.cs
- ContentFileHelper.cs
- CmsUtils.cs
- WebDisplayNameAttribute.cs
- MessageDirection.cs
- WindowsProgressbar.cs
- BaseDataListComponentEditor.cs
- XamlClipboardData.cs
- BrowserInteropHelper.cs
- StylusEventArgs.cs
- StorageMappingFragment.cs
- BinaryFormatter.cs
- oledbmetadatacollectionnames.cs
- DocumentGridPage.cs
- FaultContractInfo.cs
- TrustSection.cs
- Bits.cs
- Int32Rect.cs
- StringArrayConverter.cs
- RtfToXamlLexer.cs
- DataTableMapping.cs
- SafeLibraryHandle.cs
- FacetValueContainer.cs
- DataObject.cs
- ObjectStorage.cs
- ToolStripDesigner.cs
- HostSecurityManager.cs
- Main.cs
- DocumentGridPage.cs
- KnownIds.cs
- SchemeSettingElementCollection.cs
- Pair.cs
- DatePickerDateValidationErrorEventArgs.cs
- EmptyEnumerator.cs
- HostingPreferredMapPath.cs
- Blend.cs