2014-09-24 47 views

回答

1

兩個標準(使用其他框架)模式支持有條件的序列化 - 如果我們有:

public Foo SomeProperty {get;set} 

然後之一:

public bool ShouldSerializeSomeProperty() {...} 

或者:

public bool SomePropertySpecified { 
    get {...} 
    set {...} 
} 

應該工作正常。返回true到serialise,false返回忽略。根據您的目標框架,如果需要,通常也可能不公開。

+0

這是否意味着聲明屬性SomeProperty也是類需要分別申報ShouldSerializeSomeProperty()或SomePropertySpecified,? – Ralf 2014-09-25 06:25:26

+0

@Ralf是的,這是目前支持的已建立的,預先存在的(pre-dating protobuf-net)模式。請注意,通過'RuntimeTypeModel',您可以將方法設置爲對象上的任何*實例方法/訪問器(不強制任何特定的名稱約定),但是:是的:它們必須在擁有數據的類型上聲明。當然,如果這很不方便,你可以使用*序列化代理* - protobuf-net支持在序列化過程中在兩個相關表示之間交換,如果模型中的某些類型比其他類型更不易於序列化 – 2014-09-25 07:27:02