WCF
( C#
) サービスからクライアント ( WPF
) に送信したい次のクラスがあります。
[DataContract]
public class OutputAvailableEventArgs
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Message { get; private set; }
[DataMember]
public bool IsError { get; private set; }
public OutputAvailableEventArgs(int id) : this(id, false, "") { }
public OutputAvailableEventArgs(int id, string output) : this(id, false, output) { }
public OutputAvailableEventArgs(int id, bool isError, string output)
{
ID = id;
IsError = isError;
Message = output;
}
}
サービスでは次のように使用されます。
var channel = OperationContext.Current.GetCallbackChannel<IClientCallback>();
channel.OutputAvailable(new OutputAvailableEventArgs(1, false, "some message"));
クライアント側では、メンバーはデフォルト値を取得します。
それらをIsRequired
属性でマークしようとしましたがOutputAvailable
、クライアントで が呼び出されなくなりました。サービス側のコードはスムーズに動作しているようです (デバッガーでは何も気づきませんでした)。
メンバーの値を維持DataContract
しながらクラスを転送するにはどうすればよいですか? ( and の
使用を提案するソリューションを見ましたが、デフォルトのコンストラクターだけは必要ありません。)WCF
OnSerialized
OnDeserialized