我对WCF有点新意,我不认为我完全理解DataContracts的交易.我有这个'RequestArray'类:
[DataContract]
public class RequestArray
{
private int m_TotalRecords;
private RequestRecord[] m_Record;
[System.Xml.Serialization.XmlElement]
[DataMember]
public RequestRecord[] Record
{
get { return m_Record; }
}
[DataMember]
public int TotalRecords
{
get { return m_TotalRecords; }
set {
if (value > 0 && value <= 100) {
m_TotalRecords = value;
m_Record = new RequestRecord[value];
for (int i = 0; i < m_TotalRecords; i++)
m_Record[i] = new RequestRecord();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个想法是当客户端说requestArray.TotalRecords=6;Record阵列将被分配和初始化时(我意识到我隐藏了一个分配后面的实现,这是我无法控制的).
问题是当客户端执行此操作时,不会调用TotalRecord的设置代码,服务中的断点也会确认.相反,已经生成了某种通用的setter而是被调用.如何让客户端使用我的setter?
编辑:看起来我并没有完全了解[DataContract]的工作原理,但客户端不会执行此代码是有道理的.就像我在评论中提到的那样,如果我'手动'执行setter的工作,我会看到设置代码在我调用服务函数时正确执行.
序列化我还不确定.RequestRecord []数组的内容不会被转移.Record类有setter/getters,我觉得我需要一个辅助函数来帮助它序列化整个类.
感谢你的帮助!