我正在用WCF中的一個簡單對象裝飾DataContract
和DataMember
屬性。我有一個List<T>
屬性,並故意將其設計爲在第一次訪問時實例化後備字段(如果爲null)。下面是該課程的縮寫版本。WCF,生成的DataMember List <>代理類屬性爲空?
[DataContract]
public class FieldSetData
{
private List<FormFieldData> _formFields;
[DataMember]
public List<FormFieldData> FormFields
{
get
{
if (this._formFields == null)
{
this._formFields = new List<FormFieldData>();
}
return this._formFields;
}
set
{
this._formFields = value;
}
}
}
的問題是,在生成的客戶端/代理類,我不能沒有,因爲它是空(這是上面的if
邏輯應該處理)手動實例它的第一次訪問屬性。
的代碼下面的回報,第二行空:
//proxy class version
FieldSetData data = new FieldSetData();
data.FormFields.Add(new FormFieldData()); //FormFields property is null
我必須這樣做,而不是:
//instantiate the List<T> property
FieldSetData data = new FieldSetData { FormFields = new List<FormFieldData>() };
data.FormFields.Add(new FormFieldData());
我是相當新的WCF所以也許我失去了一些東西?我認爲代理類生成會兌現DataMember
屬性中的if
邏輯?
我只是使用內置VS 2010 WCF工具來生成代理類等,並沒有進入自定義序列化。
任何有識之士將不勝感激!
謝謝。我想我必須脫離我對此的期望。我曾經玩過雙方共享的組件,但沒有多少運氣。肯定會對你擁有的任何資源感興趣。 +1 – 2011-03-25 14:37:45
+1斑點。 – Aliostad 2011-03-25 14:38:39
谷歌搜索「wcf共享合同」帶來了大量的東西 – BenCr 2011-03-25 14:40:49