C# で、イベントの処理に使用できる動的メソッドを作成するにはどうすればよいですか?
ここにイベントがあります:
public event EventHandler<EventArgs> refresh;
ここに方法があります:
public void Test()
{
}
動的メソッドが Test メソッドを呼び出すように、更新イベントを処理するメソッドを動的に作成するにはどうすればよいですか?
上記の Test メソッドは、呼び出されるメソッドの例です。
C# で、イベントの処理に使用できる動的メソッドを作成するにはどうすればよいですか?
ここにイベントがあります:
public event EventHandler<EventArgs> refresh;
ここに方法があります:
public void Test()
{
}
動的メソッドが Test メソッドを呼び出すように、更新イベントを処理するメソッドを動的に作成するにはどうすればよいですか?
上記の Test メソッドは、呼び出されるメソッドの例です。
まあ、あなたは単にイベントを購読することができます.
public class SomeClass
{
public event EventHandler<EventArgs> refresh;
}
public void Test()
{
}
void Main()
{
var some = new SomeClass();
some.refresh += (sender, e) => Test();
// or
some.refresh += Refreshed;
}
void Refreshed(object sender, EventArgs e)
{
Test();
}
呼び出したいメソッドがクラスのインスタンス メソッドであり、そのクラスのインスタンスとメソッドの名前がある場合、 を使用Delegate.CreateDelegate()
してそのメソッドへのデリゲートを作成し、ラムダを使用してイベントで呼び出すことができます。ハンドラ:
static EventHandler<EventArgs> CreateHandler(object methodObject, string methodName)
{
var methodDelegate =
(Action)Delegate.CreateDelegate(typeof(Action), methodObject, methodName);
return (s, e) => methodDelegate();
}
使用法は次のようになります (Test
クラスにあると仮定しますC
)。
refresh += CreateHandler(new C(), "Test");
refresh(this, EventArgs.Empty);