Lie*_*nau 4 c# events delegates overloading
所以我有一个这样的自定义事件:
Work w = new worker()
w.newStatus += new worker.status(addStatus);
w.doWork();
void addStatus(string status)
{
MessageBox.Show(status);
}
Run Code Online (Sandbox Code Playgroud)
和这个:
public event status newStatus;
public delegate void status(string status);
public void doWork()
{
newStatus("Work Done");
}
Run Code Online (Sandbox Code Playgroud)
如果我要使“addStatus”成为重载,我必须做什么才能在不创建第二个委托/事件的情况下传递重载参数?
让你的status委托像这样通用:
public event Status<String> NewStatus;
public event Status<Int32> OtherStatus;
public delegate void Status<T>(T status);
public void DoWork()
{
NewStatus("Work Done");
OtherStatus(42);
}
Run Code Online (Sandbox Code Playgroud)
然后您可以创建使用相同委托的强类型事件。
编辑:这是一个完整的示例,显示了这一点:
using System;
class Example
{
static void Main()
{
Work w = new Work();
w.NewStatus += addStatus;
w.OtherStatus += addStatus;
w.DoWork();
}
static void addStatus(String status)
{
Console.WriteLine(status);
}
static void addStatus(Int32 status)
{
Console.WriteLine(status);
}
}
class Work
{
public event Status<String> NewStatus;
public event Status<Int32> OtherStatus;
public delegate void Status<T>(T status);
public void DoWork()
{
NewStatus("Work Done");
OtherStatus(42);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3289 次 |
| 最近记录: |