ValueSerializer.GetSerializerFor Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Gets the ValueSerializer for an object.
Overloads
GetSerializerFor(PropertyDescriptor) |
Gets the ValueSerializer declared for a property, by passing a CLR property descriptor for the property. |
GetSerializerFor(Type) |
Gets the ValueSerializer declared for the specified type. |
GetSerializerFor(PropertyDescriptor, IValueSerializerContext) |
Gets the ValueSerializer declared for the specified property, using the specified context. |
GetSerializerFor(Type, IValueSerializerContext) |
Gets the ValueSerializer declared for the specified type, using the specified context. |
GetSerializerFor(PropertyDescriptor)
Gets the ValueSerializer declared for a property, by passing a CLR property descriptor for the property.
public:
static System::Windows::Markup::ValueSerializer ^ GetSerializerFor(System::ComponentModel::PropertyDescriptor ^ descriptor);
public static System.Windows.Markup.ValueSerializer GetSerializerFor (System.ComponentModel.PropertyDescriptor descriptor);
static member GetSerializerFor : System.ComponentModel.PropertyDescriptor -> System.Windows.Markup.ValueSerializer
Public Shared Function GetSerializerFor (descriptor As PropertyDescriptor) As ValueSerializer
Parameters
- descriptor
- PropertyDescriptor
The CLR property descriptor for the property to be serialized.
Returns
The serializer associated with the specified property. May return null
.
Exceptions
descriptor
is null
.
Remarks
A ValueSerializer for a property, or for a type that is used as the value for a property, is indicated by applying the ValueSerializerAttribute attribute on the property or type declaration. The GetSerializerFor method is a utility method that reads the CLR type system information and returns a new ValueSerializer class based on the attribute if found on the property, or then if found on the property's type. null
might be returned if no such serializer exists. null
might also be returned if a type or property is deliberately attributed with a null-value ValueSerializerAttribute.
Another mode that GetSerializerFor supports is returning the internal TypeConverterValueSerializer
class, which is a ValueSerializer implementation that wraps a TypeConverter and translates the Convert
methods to Convert*String
methods (for instance TypeConverter.ConvertTo is called with input of the String type, and translates to ConvertToString. This is done only in cases where all of the following are true:
A TypeConverterAttribute is found on the relevant property, or the relevant property's type.
The indicated TypeConverter can be successfully constructed.
The TypeConverter returns
true
for TypeConverter.ConvertTo, called referencing the String type.The TypeConverter returns
true
for TypeConverter.CanConvertTo, called referencing the String type.The TypeConverter returns
true
for TypeConverter.CanConvertFrom, called referencing the String type.
Note
The following are special cases: DateTime types return a DateTimeValueSerializer; String types return an internal but functional serializer (StringValueSerializer
).
Applies to
GetSerializerFor(Type)
Gets the ValueSerializer declared for the specified type.
public:
static System::Windows::Markup::ValueSerializer ^ GetSerializerFor(Type ^ type);
public static System.Windows.Markup.ValueSerializer GetSerializerFor (Type type);
static member GetSerializerFor : Type -> System.Windows.Markup.ValueSerializer
Public Shared Function GetSerializerFor (type As Type) As ValueSerializer
Parameters
- type
- Type
The type to get the ValueSerializer for.
Returns
The serializer associated with the specified type. May return null
.
Exceptions
type
is null
.
Remarks
A ValueSerializer for a type is indicated by applying the ValueSerializerAttribute attribute on the type declaration. The GetSerializerFor method is a utility method that reads the CLR type system information and returns a new ValueSerializer class based on the attribute if found on the specified type
. null
might be returned if no such serializer exists. null
might also be returned if a type is deliberately attributed with a null-value ValueSerializerAttribute.
Another mode that GetSerializerFor supports is returning the internal TypeConverterValueSerializer
class, which is a ValueSerializer implementation that wraps a TypeConverter and translates the Convert
methods to Convert*String
methods (for instance TypeConverter.ConvertTo is called with input of the String type, and translates to ConvertToString. This is done only in cases where all of the following are true:
A TypeConverterAttribute is found on
type
.The indicated TypeConverter can be successfully constructed.
The TypeConverter returns
true
for TypeConverter.ConvertTo, called referencing the String type.The TypeConverter returns
true
for TypeConverter.CanConvertTo, called referencing the String type.The TypeConverter returns
true
for TypeConverter.CanConvertFrom, called referencing the String type.
Note
The following are special cases: DateTime types return a DateTimeValueSerializer; String types return an internal but functional serializer (StringValueSerializer
).
Applies to
GetSerializerFor(PropertyDescriptor, IValueSerializerContext)
Gets the ValueSerializer declared for the specified property, using the specified context.
public:
static System::Windows::Markup::ValueSerializer ^ GetSerializerFor(System::ComponentModel::PropertyDescriptor ^ descriptor, System::Windows::Markup::IValueSerializerContext ^ context);
public static System.Windows.Markup.ValueSerializer GetSerializerFor (System.ComponentModel.PropertyDescriptor descriptor, System.Windows.Markup.IValueSerializerContext context);
static member GetSerializerFor : System.ComponentModel.PropertyDescriptor * System.Windows.Markup.IValueSerializerContext -> System.Windows.Markup.ValueSerializer
Public Shared Function GetSerializerFor (descriptor As PropertyDescriptor, context As IValueSerializerContext) As ValueSerializer
Parameters
- descriptor
- PropertyDescriptor
Descriptor for the property to be serialized.
- context
- IValueSerializerContext
Context information that is used for conversion.
Returns
The serializer associated with the specified property.
Exceptions
descriptor
is null
.
Remarks
Rather than relying purely on attributes reported in the CLR type system, this overload uses the context
as a service, and calls the service's implementation of IValueSerializerContext.GetValueSerializerFor. The IValueSerializerContext.GetValueSerializerFor implementation would typically also rely on the descriptor
, but might implement special behavior for certain contexts.
This method should be called when the caller has an available IValueSerializerContext from a service. This will ensure that the correct ValueSerializer is returned for the specific context.
If the context returns null
from its IValueSerializerContext.GetValueSerializerFor for your specified descriptor
, or if the context you specify is null
, then behavior is identical to calling the GetSerializerFor(PropertyDescriptor) overload.
Applies to
GetSerializerFor(Type, IValueSerializerContext)
Gets the ValueSerializer declared for the specified type, using the specified context.
public:
static System::Windows::Markup::ValueSerializer ^ GetSerializerFor(Type ^ type, System::Windows::Markup::IValueSerializerContext ^ context);
public static System.Windows.Markup.ValueSerializer GetSerializerFor (Type type, System.Windows.Markup.IValueSerializerContext context);
static member GetSerializerFor : Type * System.Windows.Markup.IValueSerializerContext -> System.Windows.Markup.ValueSerializer
Public Shared Function GetSerializerFor (type As Type, context As IValueSerializerContext) As ValueSerializer
Parameters
- type
- Type
The type to get the ValueSerializer for.
- context
- IValueSerializerContext
Context information that is used for conversion.
Returns
The serializer associated with the specified type.
Exceptions
type
is null
.
Remarks
Rather than relying purely on attributes reported in the CLR type system, this overload uses the context
as a service, and calls the service's implementation of IValueSerializerContext.GetValueSerializerFor. The IValueSerializerContext.GetValueSerializerFor implementation would typically also rely on the type
, but might implement special behavior for certain contexts.
This method should be called when the caller has an available IValueSerializerContext from a service. This will ensure that the correct ValueSerializer is returned for the specific context.
If the context returns null
from its IValueSerializerContext.GetValueSerializerFor for your specified type
, or if the context you specify is null
, then behavior is identical to calling the GetSerializerFor(Type) overload.