//----------------------------------------------------------------------- // // Microsoft Windows Client Platform // Copyright (C) Microsoft Corporation, 2005 // // File: ValueSerializerAttribute.cs // // Contents: An attribute that allows associating a ValueSerializer // implementation with either a type or a property (or // an attached property by setting it on the static accessor // for the attachable property). // // Created: 04/28/2005 [....] // //------------------------------------------------------------------------ using System; using System.Runtime.CompilerServices; namespace System.Windows.Markup { /// /// Attribute to associate a ValueSerializer class with a value type or to override /// which value serializer to use for a property. A value serializer can be associated /// with an attached property by placing the attribute on the static accessor for the /// attached property. /// [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Property | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] #if !MOBILE [TypeForwardedFrom("WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")] #endif public sealed class ValueSerializerAttribute : Attribute { /// /// Constructor for the ValueSerializerAttribute /// /// Type of the value serializer being associated with a type or property public ValueSerializerAttribute(Type valueSerializerType) { _valueSerializerType = valueSerializerType; } /// /// Constructor for the ValueSerializerAttribute /// /// Fully qualified type name of the value serializer being associated with a type or property public ValueSerializerAttribute(string valueSerializerTypeName) { _valueSerializerTypeName = valueSerializerTypeName; } /// /// The type of the value serializer to create for this type or property. /// public Type ValueSerializerType { get { if (_valueSerializerType == null && _valueSerializerTypeName != null) _valueSerializerType = Type.GetType(_valueSerializerTypeName); return _valueSerializerType; } } /// /// The assembly qualified name of the value serializer type for this type or property. /// public string ValueSerializerTypeName { get { if (_valueSerializerType != null) return _valueSerializerType.AssemblyQualifiedName; else return _valueSerializerTypeName; } } private Type _valueSerializerType; private string _valueSerializerTypeName; } }