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
- AppSettingsSection.cs
- DecimalFormatter.cs
- DecoderExceptionFallback.cs
- CharacterMetricsDictionary.cs
- ToolboxComponentsCreatedEventArgs.cs
- ParameterRefs.cs
- EventLogPermissionAttribute.cs
- CompilerCollection.cs
- WindowsProgressbar.cs
- SqlDataReaderSmi.cs
- MouseGestureValueSerializer.cs
- InputLanguageProfileNotifySink.cs
- ResourceReferenceExpressionConverter.cs
- XmlEventCache.cs
- DependencyPropertyKey.cs
- ContentPropertyAttribute.cs
- ClientRoleProvider.cs
- Console.cs
- FontSourceCollection.cs
- HttpFormatExtensions.cs
- FastPropertyAccessor.cs
- ToolboxBitmapAttribute.cs
- DbParameterHelper.cs
- RuleAction.cs
- safex509handles.cs
- ComponentEditorForm.cs
- PropertyGroupDescription.cs
- DoubleConverter.cs
- _SslSessionsCache.cs
- AsyncResult.cs
- WindowsProgressbar.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- SecurityKeyType.cs
- TTSVoice.cs
- BamlResourceSerializer.cs
- TextDpi.cs
- StrokeNodeOperations.cs
- XmlSortKeyAccumulator.cs
- ValueQuery.cs
- DeleteIndexBinder.cs
- SmtpException.cs
- QueryConverter.cs
- TrackingSection.cs
- Camera.cs
- Cursor.cs
- CommonBehaviorsSection.cs
- WebPartVerbsEventArgs.cs
- MenuItemStyle.cs
- PassportIdentity.cs
- ToolStripArrowRenderEventArgs.cs
- ViewPort3D.cs
- EventLogPermission.cs
- SHA384.cs
- XmlSchemaInfo.cs
- CodeSpit.cs
- MetadataException.cs
- RegexCode.cs
- CultureInfoConverter.cs
- WebColorConverter.cs
- DataKey.cs
- FixedStringLookup.cs
- NullReferenceException.cs
- RectangleF.cs
- GenericsNotImplementedException.cs
- JavascriptCallbackResponseProperty.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- FontDriver.cs
- IisTraceListener.cs
- ProfileSettings.cs
- InternalResources.cs
- SafeArrayTypeMismatchException.cs
- ColorBuilder.cs
- TextElementCollectionHelper.cs
- GeneralTransformGroup.cs
- DbCommandTree.cs
- Freezable.cs
- NumericExpr.cs
- CursorConverter.cs
- CompilerErrorCollection.cs
- ControlAdapter.cs
- ToolStripDropDownClosingEventArgs.cs
- RowType.cs
- OracleConnectionFactory.cs
- TemplateBamlRecordReader.cs
- DiscreteKeyFrames.cs
- DataViewSetting.cs
- StringBlob.cs
- IDispatchConstantAttribute.cs
- SqlPersonalizationProvider.cs
- BinaryFormatter.cs
- SHA1.cs
- FormatConvertedBitmap.cs
- NetWebProxyFinder.cs
- HtmlObjectListAdapter.cs
- TreeViewImageKeyConverter.cs
- GlobalizationSection.cs
- SQLDoubleStorage.cs
- BrowserCapabilitiesCompiler.cs
- PersonalizationStateInfo.cs
- ManipulationDevice.cs