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
- JavascriptCallbackResponseProperty.cs
- Compress.cs
- WebReferencesBuildProvider.cs
- OpenTypeCommon.cs
- EFColumnProvider.cs
- ADConnectionHelper.cs
- MiniMapControl.xaml.cs
- HebrewNumber.cs
- ProcessExitedException.cs
- Int16AnimationBase.cs
- DesignerObject.cs
- EventMap.cs
- MarkupExtensionSerializer.cs
- uribuilder.cs
- Pair.cs
- Highlights.cs
- Form.cs
- ErrorItem.cs
- SymLanguageVendor.cs
- EncodingInfo.cs
- COM2TypeInfoProcessor.cs
- ConfigurationManagerHelper.cs
- QilTernary.cs
- XmlReaderDelegator.cs
- CodeIndexerExpression.cs
- ZipPackage.cs
- RoleBoolean.cs
- EntityStoreSchemaGenerator.cs
- ExtensionSurface.cs
- ReceiveCompletedEventArgs.cs
- PasswordTextContainer.cs
- MeasurementDCInfo.cs
- StorageEntityTypeMapping.cs
- ListenerServiceInstallComponent.cs
- MarshalByValueComponent.cs
- DmlSqlGenerator.cs
- ToolStripLabel.cs
- PermissionToken.cs
- SessionPageStatePersister.cs
- EventLogTraceListener.cs
- SwitchAttribute.cs
- EntityTemplateUserControl.cs
- HttpChannelBindingToken.cs
- TextEndOfSegment.cs
- XmlExceptionHelper.cs
- HostExecutionContextManager.cs
- AccessedThroughPropertyAttribute.cs
- AuthenticationService.cs
- RegexGroup.cs
- NetworkAddressChange.cs
- XPathParser.cs
- Deflater.cs
- WrappedReader.cs
- PagerSettings.cs
- Timer.cs
- InvokeGenerator.cs
- LifetimeServices.cs
- VScrollProperties.cs
- SessionEndingEventArgs.cs
- EventLogPermission.cs
- FormConverter.cs
- CompilerLocalReference.cs
- Schema.cs
- odbcmetadatacolumnnames.cs
- figurelength.cs
- MenuItemBinding.cs
- CodeMemberEvent.cs
- MsmqElementBase.cs
- DataGridViewLinkCell.cs
- ObjectCache.cs
- IUnknownConstantAttribute.cs
- CodeExpressionRuleDeclaration.cs
- JsonCollectionDataContract.cs
- ScriptHandlerFactory.cs
- _TransmitFileOverlappedAsyncResult.cs
- AvtEvent.cs
- AesCryptoServiceProvider.cs
- DLinqTableProvider.cs
- ProviderUtil.cs
- DetailsView.cs
- InputBindingCollection.cs
- ElementsClipboardData.cs
- VerticalConnector.xaml.cs
- SchemaCreator.cs
- BooleanExpr.cs
- PageThemeCodeDomTreeGenerator.cs
- ErrorRuntimeConfig.cs
- SizeAnimationBase.cs
- NameNode.cs
- ClrPerspective.cs
- Brushes.cs
- PageAdapter.cs
- TemplateControlCodeDomTreeGenerator.cs
- PropertyPathConverter.cs
- TextSpanModifier.cs
- PerformanceCounterManager.cs
- HandleCollector.cs
- ErrorStyle.cs
- AppDomainGrammarProxy.cs
- DataGridRow.cs