好吧,我在库中有一个按钮,如下所示:

    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/

10-13 06:50