我有一个监视应用程序,通过WCF从其他应用程序接收处理更新。以前,被监控的应用程序有一个“更新”类来将数据发送到监控应用程序。现在我正在写一个抽象基类,看起来像这样WCF抽象基类及其子类上的DataContract
public abstract class Update
{
public readonly DateTime TimeStamp;
public readonly int AppId;
public Update()
{
TimeStamp = DateTime.Now;
AppId = SomeMethodThatCalculatesId();
}
private int SomeMethodThatCalculatesId()
{
// my calculations ...
}
}
下面是一个例子子类
public class ProcessUpdate : Update
{
public readonly string ProcessMessage;
public ProcessUpdate(string processMessage) : base()
{
if (string.IsNullOrEmpty(processMessage))
{
throw new ArgumentNullException("processMessage");
}
ProcessMessage = processMessage;
}
}
我希望能够发送从Update
衍生监控应用程式内容,并要防止更新从被实例化,这就是为什么它是抽象的。我想为我的AppId生成和派生类的一个实现不担心或改变它,这就是为什么AppId是只读的。
是否Update
需要DataContract
属性标记,或者只需要我的子?如果是这样的话,我还可以装点TimeStamp
和AppId
与DataMemeber
没有DataContract
和监控应用程序仍然可以访问这些属性?
好吧,如果我得到这个权利,Update和ProcessUpdate需要DataContract。虽然IUpdate在其属性上需要DataMember。那是对的吗? – jlafay 2011-04-08 19:45:36
或者我可以用DataContract装饰ProcessUpdate,因为Update永远不会通过电线。 – jlafay 2011-04-08 19:51:05