ValueSerializer.GetSerializerFor 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得物件的 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
。
例外狀況
descriptor
為 null
。
備註
屬性的 , ValueSerializer 或做為屬性值使用的型別,是透過在屬性或類型宣告上套用 ValueSerializerAttribute 屬性來表示。 方法 GetSerializerFor 是公用程式方法,可讀取CLR型別系統資訊,並在屬性上找到時根據屬性傳回新的 ValueSerializer 類別,如果是在屬性的類型上找到,則傳回新的類別。
null
如果沒有這類串列化程式存在,可能會傳回 。
null
如果型別或屬性刻意使用 Null 值 ValueSerializerAttribute來設定屬性,也可能傳回 。
另一個支援的模式 GetSerializerFor 是傳回內部 TypeConverterValueSerializer
類別,這是一種 ValueSerializer 實作,它會包裝 TypeConverter 方法,並將方法轉譯 Convert
為 Convert*String
方法 (,例如 TypeConverter.ConvertTo ,使用 型別的 String 輸入呼叫,並轉譯為 ConvertToString。 只有在下列所有情況都成立時,才會完成此動作:
TypeConverterAttribute可在相關屬性或相關屬性的類型上找到 。
TypeConverter指示的 可以成功建構。
會 TypeConverter 針對 傳回
true
, TypeConverter.ConvertTo其稱為 參考型別 String 。會 TypeConverter 針對 傳回
true
, TypeConverter.CanConvertTo其稱為 參考型別 String 。會 TypeConverter 針對 傳回
true
, TypeConverter.CanConvertFrom其稱為 參考型別 String 。
注意
以下是特殊案例: 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
。
例外狀況
type
為 null
。
備註
型別的 , ValueSerializer 是藉由在型別宣告上套用 ValueSerializerAttribute 屬性來表示。 方法是GetSerializerFor公用程式方法,可讀取CLR型別系統資訊,並在指定的type
上找到時,根據屬性傳回新的ValueSerializer類別。
null
如果沒有這類串列化程式存在,可能會傳回 。
null
如果型別刻意使用 Null 值 ValueSerializerAttribute屬性化,也可能傳回 。
另一個支援的模式 GetSerializerFor 是傳回內部 TypeConverterValueSerializer
類別,這是一種 ValueSerializer 實作,它會包裝 TypeConverter 方法,並將方法轉譯 Convert
為 Convert*String
方法 (,例如 TypeConverter.ConvertTo ,使用 型別的 String 輸入呼叫,並轉譯為 ConvertToString。 只有在下列所有情況都成立時,才會完成此動作:
TypeConverterAttribute在 上
type
找到 。TypeConverter指示的 可以成功建構。
會 TypeConverter 針對 傳回
true
, TypeConverter.ConvertTo其稱為 參考型別 String 。會 TypeConverter 針對 傳回
true
, TypeConverter.CanConvertTo其稱為 參考型別 String 。會 TypeConverter 針對 傳回
true
, TypeConverter.CanConvertFrom其稱為 參考型別 String 。
注意
以下是特殊案例: 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
用於轉換的內容資訊。
傳回
與指定屬性相關聯的序列化程式。
例外狀況
descriptor
為 null
。
備註
此多載會使用 context
做為服務,並呼叫 服務的 實 IValueSerializerContext.GetValueSerializerFor作,而不是完全依賴CLR類型系統中報告的屬性。 實 IValueSerializerContext.GetValueSerializerFor 作通常也會依賴 descriptor
,但可能會針對特定內容實作特殊行為。
當呼叫端有可從服務取得 IValueSerializerContext 時,應該呼叫這個方法。 這可確保針對特定內容傳回正確的 ValueSerializer 。
如果內容從指定的 descriptor
傳回 null
,IValueSerializerContext.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
用於轉換的內容資訊。
傳回
與指定類型相關聯的序列化程式。
例外狀況
type
為 null
。
備註
此多載會使用 context
做為服務,並呼叫 服務的 實 IValueSerializerContext.GetValueSerializerFor作,而不是完全依賴CLR類型系統中報告的屬性。 實 IValueSerializerContext.GetValueSerializerFor 作通常也會依賴 type
,但可能會針對特定內容實作特殊行為。
當呼叫端有可從服務取得 IValueSerializerContext 時,應該呼叫這個方法。 這可確保針對特定內容傳回正確的 ValueSerializer 。
如果內容從指定的 type
傳回 null
,IValueSerializerContext.GetValueSerializerFor或者您指定的內容是 null
,則行為與呼叫GetSerializerFor(Type)多載相同。