Share via


ValueSerializer.GetSerializerFor 方法

定義

取得物件的 ValueSerializer

多載

GetSerializerFor(PropertyDescriptor)

透過傳遞屬性的 CLR 屬性描述元,取得針對屬性所宣告的 ValueSerializer

GetSerializerFor(Type)

取得為指定類型宣告的 ValueSerializer

GetSerializerFor(PropertyDescriptor, IValueSerializerContext)

使用指定的內容,取得為指定屬性宣告的 ValueSerializer

GetSerializerFor(Type, IValueSerializerContext)

使用指定的內容,取得為指定類型宣告的 ValueSerializer

GetSerializerFor(PropertyDescriptor)

透過傳遞屬性的 CLR 屬性描述元,取得針對屬性所宣告的 ValueSerializer

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

參數

descriptor
PropertyDescriptor

要序列化之屬性的 CLR 屬性描述元。

傳回

與指定屬性相關聯的序列化程式。 可能會傳回 null

例外狀況

descriptornull

備註

屬性的 , ValueSerializer 或做為屬性值使用的型別,是透過在屬性或類型宣告上套用 ValueSerializerAttribute 屬性來表示。 方法 GetSerializerFor 是公用程式方法,可讀取CLR型別系統資訊,並在屬性上找到時根據屬性傳回新的 ValueSerializer 類別,如果是在屬性的類型上找到,則傳回新的類別。 null 如果沒有這類串列化程式存在,可能會傳回 。 null 如果型別或屬性刻意使用 Null 值 ValueSerializerAttribute來設定屬性,也可能傳回 。

另一個支援的模式 GetSerializerFor 是傳回內部 TypeConverterValueSerializer 類別,這是一種 ValueSerializer 實作,它會包裝 TypeConverter 方法,並將方法轉譯 ConvertConvert*String 方法 (,例如 TypeConverter.ConvertTo ,使用 型別的 String 輸入呼叫,並轉譯為 ConvertToString。 只有在下列所有情況都成立時,才會完成此動作:

注意

以下是特殊案例: DateTime 類型會傳 DateTimeValueSerializer回 ; String 類型會傳回內部但功能性的串行化程式 (StringValueSerializer) 。

適用於

GetSerializerFor(Type)

取得為指定類型宣告的 ValueSerializer

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

參數

type
Type

要取得 ValueSerializer 的類型。

傳回

與指定類型相關聯的序列化程式。 可能會傳回 null

例外狀況

typenull

備註

型別的 , ValueSerializer 是藉由在型別宣告上套用 ValueSerializerAttribute 屬性來表示。 方法是GetSerializerFor公用程式方法,可讀取CLR型別系統資訊,並在指定的type上找到時,根據屬性傳回新的ValueSerializer類別。 null 如果沒有這類串列化程式存在,可能會傳回 。 null 如果型別刻意使用 Null 值 ValueSerializerAttribute屬性化,也可能傳回 。

另一個支援的模式 GetSerializerFor 是傳回內部 TypeConverterValueSerializer 類別,這是一種 ValueSerializer 實作,它會包裝 TypeConverter 方法,並將方法轉譯 ConvertConvert*String 方法 (,例如 TypeConverter.ConvertTo ,使用 型別的 String 輸入呼叫,並轉譯為 ConvertToString。 只有在下列所有情況都成立時,才會完成此動作:

注意

以下是特殊案例: DateTime 類型會傳 DateTimeValueSerializer回 ; String 類型會傳回內部但功能性的串行化程式 (StringValueSerializer) 。

適用於

GetSerializerFor(PropertyDescriptor, IValueSerializerContext)

使用指定的內容,取得為指定屬性宣告的 ValueSerializer

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

參數

descriptor
PropertyDescriptor

要序列化之屬性的描述元。

context
IValueSerializerContext

用於轉換的內容資訊。

傳回

與指定屬性相關聯的序列化程式。

例外狀況

descriptornull

備註

此多載會使用 context 做為服務,並呼叫 服務的 實 IValueSerializerContext.GetValueSerializerFor作,而不是完全依賴CLR類型系統中報告的屬性。 實 IValueSerializerContext.GetValueSerializerFor 作通常也會依賴 descriptor,但可能會針對特定內容實作特殊行為。

當呼叫端有可從服務取得 IValueSerializerContext 時,應該呼叫這個方法。 這可確保針對特定內容傳回正確的 ValueSerializer

如果內容從指定的 descriptor傳回 nullIValueSerializerContext.GetValueSerializerFor或者您指定的內容是 null,則行為與呼叫GetSerializerFor(PropertyDescriptor)多載相同。

適用於

GetSerializerFor(Type, IValueSerializerContext)

使用指定的內容,取得為指定類型宣告的 ValueSerializer

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

參數

type
Type

要取得 ValueSerializer 的類型。

context
IValueSerializerContext

用於轉換的內容資訊。

傳回

與指定類型相關聯的序列化程式。

例外狀況

typenull

備註

此多載會使用 context 做為服務,並呼叫 服務的 實 IValueSerializerContext.GetValueSerializerFor作,而不是完全依賴CLR類型系統中報告的屬性。 實 IValueSerializerContext.GetValueSerializerFor 作通常也會依賴 type,但可能會針對特定內容實作特殊行為。

當呼叫端有可從服務取得 IValueSerializerContext 時,應該呼叫這個方法。 這可確保針對特定內容傳回正確的 ValueSerializer

如果內容從指定的 type傳回 nullIValueSerializerContext.GetValueSerializerFor或者您指定的內容是 null,則行為與呼叫GetSerializerFor(Type)多載相同。

適用於