具有通用约束的通用方法

时间:2013-01-25 03:05:43

标签: c# generics generic-method

我想要做的是有一个方法,将泛型类型作为带约束的参数。但是,约束的类型也有第二种泛型类型,但我希望无论第二次输入是什么,该方法都能正常工作:

public class IEvent<T> where T : EventArgs { }
public class EventManager
{
    public void DoMethod<T>() where T: IEvent<???>
    {
    }
}

具体来说,我试图让我的EventManager课程接收任何类型的事件,然后用它做点什么。我是在过度复杂化,还是可行的?

2 个答案:

答案 0 :(得分:11)

您必须使用第二个约束:

void DoMethod<TEvent, TArgs>() where TEvent : IEvent<TArgs> where TArgs : EventArgs {}

答案 1 :(得分:1)

试试这个。

public class IEvent<T> where T : EventArgs { }
public class EventManager
{
    public void DoMethod<T, U>() where T : IEvent<U> where U : EventArgs
    {
    }
}