好吧,我在库中有一个按钮,如下所示:
public class Button {
public event Action<UIButtonX> onClicked;
//
// when button clicked, on OnClicked method is called
//
protected virtual void OnClicked () {
if (onClicked != null) onClicked (this);
}
}
当我想处理按钮单击时,我正在写如下内容:
button.onClicked += delegate{
//do something
}
要么
button.onClicked += HandleButtonClick;
void HandleButtonClick(UIButton obj){
}
现在我想将参数传递给匿名委托,例如
button.onClicked += delegate(UIButton obj, int id) {
//do something with id
}
但是编译器不允许这样做。如何解决这个问题?
谢谢。
最佳答案
从外观上看,您需要执行以下操作:
public class Button
{
public event Action<UIButtonX, int> onClicked;
public int Id { get; set; }
protected virtual void OnClicked ()
{
var e = this.onClicked;
if (e != null)
{
e(this, this.Id);
}
}
}
然后可以添加您的处理程序:
button.onClicked += (button, id) => { /* code here */ }
关于c# - 将附加参数传递给System.Action,C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7308159/