私は、WCF経由で他のアプリケーションからの処理の更新を受け取る監視アプリケーションを持っています。以前は、監視対象のアプリケーションにデータを送信するための1つの「更新」クラスがありました。今、私はここでは例のサブクラスは、私がUpdate
由来監視アプリの何かを送ることができるようにしたいと更新を防ぎたい抽象基本クラスとそのサブクラスのWCF DataContract
public class ProcessUpdate : Update
{
public readonly string ProcessMessage;
public ProcessUpdate(string processMessage) : base()
{
if (string.IsNullOrEmpty(processMessage))
{
throw new ArgumentNullException("processMessage");
}
ProcessMessage = processMessage;
}
}
だこの
public abstract class Update
{
public readonly DateTime TimeStamp;
public readonly int AppId;
public Update()
{
TimeStamp = DateTime.Now;
AppId = SomeMethodThatCalculatesId();
}
private int SomeMethodThatCalculatesId()
{
// my calculations ...
}
}
のように見える抽象基本クラスを書いていますインスタンス化されることから、それが抽象的な理由です。私はAppIdジェネレーションの実装を1つ欲し、派生クラスはそれを気にしたり変更したりしないようにしてください。そのためAppIdは読み込み専用です。
Update
にはDataContract
属性タグが必要ですか、それともサブクラスでのみ必要ですか?その場合、TimeStamp
とAppId
をDataMemeber
とし、DataContract
を付けずに飾ることはできますが、引き続き監視アプリケーションでこれらのプロパティにアクセスできますか?
私がこの権利を得た場合、UpdateとProcessUpdateにはDataContractが必要です。 IUpdateはそのプロパティ上でDataMemberを必要とします。あれは正しいですか? – jlafay
また、DataContractでProcessUpdateをデコレートすることはできますか? – jlafay