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
- HttpHandlersInstallComponent.cs
- HtmlWindowCollection.cs
- RuleInfoComparer.cs
- HostedHttpContext.cs
- LinearGradientBrush.cs
- AsyncOperation.cs
- WebPartManagerInternals.cs
- MemoryFailPoint.cs
- ZipArchive.cs
- DbDeleteCommandTree.cs
- SingleObjectCollection.cs
- WebPartsSection.cs
- BasePattern.cs
- EndEvent.cs
- StateManager.cs
- DataTableReader.cs
- EngineSite.cs
- HelpProvider.cs
- AlgoModule.cs
- SqlRowUpdatingEvent.cs
- Permission.cs
- CodeCommentStatement.cs
- XamlStream.cs
- BulletedList.cs
- ElementUtil.cs
- ObjectListItemCollection.cs
- SQLCharsStorage.cs
- WebPartEditVerb.cs
- BufferedWebEventProvider.cs
- ToolStripPanel.cs
- List.cs
- FocusTracker.cs
- QueryOutputWriterV1.cs
- TimeManager.cs
- ToolStripSystemRenderer.cs
- SqlDataSourceSummaryPanel.cs
- DataSourceUtil.cs
- SqlClientWrapperSmiStream.cs
- SoapMessage.cs
- WCFModelStrings.Designer.cs
- WindowsListView.cs
- BamlLocalizableResourceKey.cs
- DetailsViewUpdatedEventArgs.cs
- SequenceQuery.cs
- TypeSystemProvider.cs
- RewritingProcessor.cs
- AnnotationDocumentPaginator.cs
- StreamWriter.cs
- externdll.cs
- ExpressionVisitor.cs
- CodeAccessSecurityEngine.cs
- Typography.cs
- ScriptModule.cs
- URLMembershipCondition.cs
- ToolStripItemDesigner.cs
- SafeHandles.cs
- GroupBoxRenderer.cs
- DataKeyArray.cs
- SHA1CryptoServiceProvider.cs
- DataServiceCollectionOfT.cs
- FrameworkObject.cs
- counter.cs
- XamlInt32CollectionSerializer.cs
- FilterException.cs
- ServerIdentity.cs
- EntityConnectionStringBuilderItem.cs
- AllowedAudienceUriElementCollection.cs
- DateTimeFormat.cs
- RelationshipDetailsRow.cs
- StatusBarDesigner.cs
- ProjectionPruner.cs
- ZipPackagePart.cs
- ContextMenuService.cs
- TokenCreationException.cs
- SvcMapFileLoader.cs
- TemplateModeChangedEventArgs.cs
- WsdlBuildProvider.cs
- CodeDomDesignerLoader.cs
- BufferedReadStream.cs
- ZoomPercentageConverter.cs
- DataBoundControlHelper.cs
- ModifierKeysValueSerializer.cs
- ObjectListItem.cs
- StylusLogic.cs
- ControlIdConverter.cs
- AssemblyCollection.cs
- HyperLinkDesigner.cs
- ControlIdConverter.cs
- Transactions.cs
- SchemaElementDecl.cs
- cookieexception.cs
- ResourceProviderFactory.cs
- ReliableSessionBindingElement.cs
- listitem.cs
- TrustManager.cs
- OutputCacheSettingsSection.cs
- ReadWriteObjectLock.cs
- ComponentDispatcher.cs
- DefaultMemberAttribute.cs
- Column.cs