在接口中传递方法

时间:2012-08-29 14:12:24

标签: c# .net wpf events

我有以下界面:

public interface IModuleTile
{
    void AddEvent(/*Type here*/ methodToAdd);
    void RemoveEvent(/*Type here*/ methodToRemove);
}

我想这样做:

public partial class TestControl : UserControl, IModuleTile
{
    public TestControl()
    {
        InitializeComponent();
    }

    public void AddEvent(/*Type here*/ eventToAdd)
    {
        ShowModule.Click += methodToAdd;
    }

    public void RemoveEvent(/*Type here*/ methodToRemove);
    {
        ShowModule.Click += methodToRemove;
    }
}

我需要设置什么作为传递方法的接口类型?

2 个答案:

答案 0 :(得分:2)

如果此事件始终与按钮上的Click事件相同:请使用EventHandler

public void AddEvent(EventHandler eventToAdd)
{
    ShowModule.Click += methodToAdd;
}

当您有多个具有不同签名的事件时,它会变得更复杂。

答案 1 :(得分:2)

我在这里要做的只是将事件直接放入界面,而不是显式添加添加/删除方法。

public interface IModuleTile
{ 
    //change `EventHandler` to match whatever the event handler type 
    //is for the event that you're "wrapping", if needed
    event EventHandler MyClick;
}

然后实现可以是:

public partial class TestControl : UserControl, IModuleTile
{
    //You'll need to change `EventHandler` here too, if you changed it above
    public event EventHandler MyClick
    {
        add
        {
            ShowModule.Click += value;
        }
        remove
        {
            ShowModule.Click -= value;
        }
    }
}