C# EventHandlerにカスタム引数を渡す方法【実践例付き】
C#で、EventHandlerにカスタムパラメータを追加したい場合は、EventArgsクラスをカスタム化して実装することができます。以下は一例です。
using System;
public class CustomEventArgs : EventArgs
{
public string CustomParameter { get; set; }
public CustomEventArgs(string customParameter)
{
CustomParameter = customParameter;
}
}
public class MyClass
{
public event EventHandler<CustomEventArgs> CustomEvent;
public void OnCustomEvent(string customParameter)
{
CustomEvent?.Invoke(this, new CustomEventArgs(customParameter));
}
}
public class Program
{
public static void Main()
{
MyClass myClass = new MyClass();
myClass.CustomEvent += HandleCustomEvent;
myClass.OnCustomEvent("Hello, World!");
}
public static void HandleCustomEvent(object sender, CustomEventArgs e)
{
Console.WriteLine("Custom Event Handler invoked with parameter: " + e.CustomParameter);
}
}
上記の例では、CustomEventArgsクラスがカスタマイズされ、CustomParameterプロパティがカスタムパラメータを格納するために含まれています。その後、MyClassクラスでEventHandlerイベントが宣言され、そのジェネリックパラメータがCustomEventArgsに指定されています。イベントをトリガーする際に、CustomEventArgsオブジェクトをnew CustomEventArgs(customParameter)で作成し、それをイベントのトリガーメソッドInvokeに渡します。イベントハンドラHandleCustomEventでは、渡されたカスタムパラメータにアクセスするためにe.CustomParameterを使用できます。