我想要做的是有一个方法,将泛型类型作为带约束的参数。但是,约束的类型也有第二种泛型类型,但我希望无论第二次输入是什么,该方法都能正常工作:
public class IEvent<T> where T : EventArgs { }
public class EventManager
{
public void DoMethod<T>() where T: IEvent<???>
{
}
}
具体来说,我试图让我的EventManager
课程接收任何类型的事件,然后用它做点什么。我是在过度复杂化,还是可行的?
答案 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
{
}
}