【发布时间】:2011-09-13 01:16:50
【问题描述】:
当我在客户端上创建 DataContract 的实例时,我需要让一些数据成员获取一些值。使用构造函数不会发生这种情况。我搜索了不同的论坛,发现我们必须使用 [OnDeserializing] 和 [OnDeserialized] 属性。这也行不通。有人可以在这里提出一些建议。另一种选择是在客户端的部分类中创建构造函数。我想避免这种情况。
请在下面找到代码:
服务器端:数据合约
[DataContract]
public class Account
{
private int mAccountId;
private string mAccountName;
public Account()
{
mAccountId = 5;
mAccountName = "ABC";
}
[OnDeserializing]
public void OnDeserializing(StreamingContext context)
{
mAccountId = 5;
mAccountName = "ABC";
}
[OnDeserialized]
public void OnDeserialized(StreamingContext context)
{
}
[DataMember]
public int AccountId
{
get
{
return mAccountId;
}
set
{
mAccountId = value;
}
}
[DataMember]
public string AccountName
{
get
{
return mAccountName;
}
set
{
mAccountName = value;
}
}
}
客户端 - 初始化
namespace TestClient
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Account acc = new Account();
}
}
}
【问题讨论】:
-
WCF 客户端-服务器连接将仅反映您的数据合同的数据方面 - 不您可能在数据类中拥有的任何代码。毕竟:只有数据可以序列化为由 XSD(XML 模式)表示的格式并通过网络发送 - 没有代码。
标签: wcf datacontract