イベントとプロパティが次のように定義されているインターフェイスを定義しました。デコレータでイベントとプロパティを定義する方法
public interface IMyInterface
{
event EventHandler SomeEvent;
string GetName();
string IpAddress { get; set; }
}
私はクラスを作成し、それを使用すると、すべて正常に動作します。
デコレータを使用してこのクラスを拡張したいと思います。 イベントの処理方法がわかりません。私は明確であると思うプロパティのために、ただ確認をしたい。
デコレータクラスを次のように定義しました。あなたがイベントを処理するべきではありません
public class LoggerDecorator : IMyInterface
{
private readonly IMyInterface _MyInterface;
private readonly ILog _MyLog;
public LoggerDecorator(IMyInterface myInterface, ILog myLog)
{
if (myInterface == null)
throw new ArgumentNullException("IMyInterface is null");
_MyInterface = myInterface;
if (myLog == null)
throw new ArgumentNullException("ILog instance is null");
_MyLog = myLog;
}
public string GetName()
{
// If needed I can use log here
_MyLog.Info("GetName method is called.");
return _MyInterface.GetName();
}
// Is this the way to set properties?
public string IpAddress
{
get
{
return _MyInterface.IpAddress;
}
set
{
// If needed I can use log here
_MyLog.Info("IpAddress is set.");
_MyInterface.IpAddress = value;
}
}
// But How to handle this evetn?? Please help. I am not clear about this.
public event EventHandler SomeEvent;
}
私はそれを得ていると思います。私が試してみましょう。 – VivekDev
イベントを定義するとき。他のオブジェクトはそれに登録することができます。だからあなたのオブジェクトは '知らない' /レシーバクラスに制限することなく 'コールバック'を行うことができます。この方法で、メソッドを通知/呼び出すことができるクラスを再利用できます。 –