5

我想要做的是有一个将泛型类型作为带有约束的参数的方法。但是,约束的类型也有第二个泛型类型,但我希望该方法能够工作,而不管第二个类型是什么:

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

具体来说,我试图让我的EventManager班级接收任何类型的事件,然后对其进行处理。我是不是把事情复杂化了,或者这可行吗?

4

2 回答 2

11

您必须使用第二个约束:

void DoMethod<TEvent, TArgs>() where TEvent : IEvent<TArgs> where TArgs : EventArgs {}
于 2013-01-25T03:09:26.253 回答
1

试试这个。

public class IEvent<T> where T : EventArgs { }
public class EventManager
{
    public void DoMethod<T, U>() where T : IEvent<U> where U : EventArgs
    {
    }
}
于 2013-01-25T03:20:21.857 回答