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
- TreeNodeCollectionEditor.cs
- OverloadGroupAttribute.cs
- PointLightBase.cs
- SiteMembershipCondition.cs
- ExecutedRoutedEventArgs.cs
- ReadOnlyDataSource.cs
- SchemaExporter.cs
- CatalogPart.cs
- MimeTypePropertyAttribute.cs
- PointF.cs
- CodeArrayIndexerExpression.cs
- TextRunTypographyProperties.cs
- FunctionImportElement.cs
- _BufferOffsetSize.cs
- ExpandSegment.cs
- DataTable.cs
- RightsManagementManager.cs
- ImmutableDispatchRuntime.cs
- OuterGlowBitmapEffect.cs
- PatternMatcher.cs
- FacetChecker.cs
- FileUtil.cs
- ActivationWorker.cs
- SafeProcessHandle.cs
- TypeConverterHelper.cs
- SqlCommandSet.cs
- PeerDuplexChannelListener.cs
- ParseElementCollection.cs
- SmiGettersStream.cs
- LingerOption.cs
- FacetDescriptionElement.cs
- FilterQuery.cs
- RegexCapture.cs
- StatusBarAutomationPeer.cs
- TagMapCollection.cs
- EncryptedPackage.cs
- TextDpi.cs
- SkinBuilder.cs
- EncodingStreamWrapper.cs
- Exception.cs
- entitydatasourceentitysetnameconverter.cs
- RowType.cs
- TypeDescriptionProvider.cs
- CLRBindingWorker.cs
- WindowsRichEdit.cs
- TransformDescriptor.cs
- InkCanvasSelection.cs
- EncryptedKey.cs
- HtmlForm.cs
- System.Data.OracleClient_BID.cs
- ClockController.cs
- ExtensibleClassFactory.cs
- DirectionalLight.cs
- DynamicMetaObject.cs
- DesignerCommandSet.cs
- KnowledgeBase.cs
- TdsValueSetter.cs
- ImageCollectionEditor.cs
- ReturnEventArgs.cs
- PointF.cs
- ImportCatalogPart.cs
- LinkArea.cs
- NoResizeHandleGlyph.cs
- ViewBase.cs
- ImageMap.cs
- IgnoreSection.cs
- DataGridRowHeaderAutomationPeer.cs
- SqlConnectionString.cs
- EventLogPermissionAttribute.cs
- HtmlMeta.cs
- TextDecorations.cs
- StructureChangedEventArgs.cs
- COM2TypeInfoProcessor.cs
- CompatibleIComparer.cs
- BitmapPalette.cs
- AttachmentService.cs
- SQLGuidStorage.cs
- dbenumerator.cs
- _ConnectionGroup.cs
- TransactionsSectionGroup.cs
- DataMember.cs
- StrongNameUtility.cs
- ScheduleChanges.cs
- PageParserFilter.cs
- SvcMapFile.cs
- FilteredAttributeCollection.cs
- LineServices.cs
- TypePresenter.xaml.cs
- XsltCompileContext.cs
- PrintDocument.cs
- Stream.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- DynamicQueryableWrapper.cs
- RoleGroupCollection.cs
- UriSectionData.cs
- Verify.cs
- TextEditorMouse.cs
- TreeIterator.cs
- AssemblyBuilder.cs
- WebHttpBindingCollectionElement.cs