所以我想在类中存储一个多播 Action,并将从修改类的私有 Action 对象的类方法调用的方法传递给它:
public class Bar;
public class Xzxxy
{
public delegate void BarDelegate(Bar bar);
private Action<Bar> BarAction;
public void Add(BarDelegate bd)
{
BarAction += bd;
}
public void Invoke(Bar bar)
{
BarAction.Invoke(bar);
}
}
这不起作用,因为在
Xzxxy.Add
中,BarAction += bd;
行有错误 Cannot implicitly convert Xzzzy.BarDelegate to System.Action<Bar>
。我应该如何声明 BarDelegate
才能获得我想要的行为?
这是一种解决方案
public void Add(BarDelegate bd)
{
BarAction += (bar)=>bd(bar);
}
或者更好的方法是将
Action<Bar>
传递给 Add 方法
public void Add(Action<Bar> bd)
{
BarAction += bd;
}