我有一个基类
[DataContract]
public class BaseRequest
{
[DataMember]
public Guid Key;
[DataMember]
public RequestType RequestType;
}
有很多类会继承这个,我希望他们自动设置继承的RequestType枚举
[DataContract]
public class LoginRequest : BaseRequest
{
[DataMember]
public void LoginRequest()
{
this.RequestType = StationHouseWebServices.RequestType.Login;
}
[DataMember]
public string Username;
[DataMember]
public string Password;
}
但由于这是一个WCF DataContact,我的服务引用只会传递DataMembers,而不是构造函数。有没有办法我仍然可以这样做,为自动分配的父变量设置默认值?像
这样的东西this.RequestType = StationHouseWebServices.RequestType.Login;
答案 0 :(得分:1)
因为不会调用构造函数,所以WCF为您提供了一种方便的方法来运行通常在构造函数中执行的任何设置代码。这称为OnDeserializedAttribute
。
[OnDeserializedAttribute]
private void RunThisCode(StreamingContext context)
{
...
}
见这里:http://msdn.microsoft.com/en-us/library/system.runtime.serialization.ondeserializedattribute.aspx