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
- GlobalizationSection.cs
- CoordinationService.cs
- CompilerErrorCollection.cs
- FunctionUpdateCommand.cs
- ImportOptions.cs
- CounterSampleCalculator.cs
- DependencyPropertyKey.cs
- _ProxyRegBlob.cs
- KeyEvent.cs
- SqlCommandSet.cs
- BindingMAnagerBase.cs
- NativeCppClassAttribute.cs
- WebPartMovingEventArgs.cs
- VariantWrapper.cs
- SQLInt16.cs
- InternalException.cs
- WebBrowserUriTypeConverter.cs
- EntityDataSourceContainerNameItem.cs
- Tag.cs
- RunWorkerCompletedEventArgs.cs
- DesignBindingPicker.cs
- PolicyValidator.cs
- DbMetaDataCollectionNames.cs
- DesignParameter.cs
- webeventbuffer.cs
- GroupItemAutomationPeer.cs
- CorrelationManager.cs
- KeyValuePairs.cs
- ScalarType.cs
- ChildTable.cs
- DependencyObjectType.cs
- XmlnsCache.cs
- AddInSegmentDirectoryNotFoundException.cs
- SessionPageStatePersister.cs
- WindowsListViewGroupHelper.cs
- CornerRadiusConverter.cs
- MailMessageEventArgs.cs
- SqlDataSourceStatusEventArgs.cs
- ValidateNames.cs
- ContentControl.cs
- CodePageUtils.cs
- UTF32Encoding.cs
- IsolatedStorage.cs
- PathTooLongException.cs
- SafeReversePInvokeHandle.cs
- LateBoundBitmapDecoder.cs
- SqlWriter.cs
- DataColumn.cs
- CacheChildrenQuery.cs
- ConnectorSelectionGlyph.cs
- DataGridViewColumnHeaderCell.cs
- FontFamilyValueSerializer.cs
- ThreadAbortException.cs
- XmlElement.cs
- SubstitutionList.cs
- XmlSchemaProviderAttribute.cs
- ConfigurationLockCollection.cs
- TransformerConfigurationWizardBase.cs
- ADMembershipProvider.cs
- KeyProperty.cs
- DataControlFieldHeaderCell.cs
- OdbcDataAdapter.cs
- XmlSequenceWriter.cs
- EdgeModeValidation.cs
- PasswordPropertyTextAttribute.cs
- EditorPartCollection.cs
- ListViewInsertEventArgs.cs
- TreeNodeBindingDepthConverter.cs
- DefinitionUpdate.cs
- DesignerObject.cs
- SimpleBitVector32.cs
- Triplet.cs
- DataGridCell.cs
- XmlSchemaGroup.cs
- HostedElements.cs
- ColorContextHelper.cs
- CodeTypeDeclaration.cs
- ScrollChrome.cs
- BadImageFormatException.cs
- QueryAsyncResult.cs
- ModelItem.cs
- DecoderExceptionFallback.cs
- HttpProfileBase.cs
- LogLogRecordEnumerator.cs
- OutputChannelBinder.cs
- GeneralTransform3DTo2DTo3D.cs
- DataBindingExpressionBuilder.cs
- Number.cs
- RadioButtonRenderer.cs
- StackSpiller.Generated.cs
- MeasureItemEvent.cs
- XmlResolver.cs
- EnumerationRangeValidationUtil.cs
- JsonByteArrayDataContract.cs
- GroupBoxAutomationPeer.cs
- DebugView.cs
- DataControlLinkButton.cs
- HashHelper.cs
- DocumentStatusResources.cs
- SystemFonts.cs