我正在用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