具有通用约束的通用方法

Kyl*_*ran 5 c# generics generic-method

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

public class IEvent<T> where T : EventArgs { }
public class EventManager
{
    public void DoMethod<T>() where T: IEvent<???>
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

具体来说,我试图让我的EventManager班级接受任何类型的活动,然后用它做点什么.我是在过度复杂化,还是可行的?

pho*_*oog 11

你必须使用第二个约束:

void DoMethod<TEvent, TArgs>() where TEvent : IEvent<TArgs> where TArgs : EventArgs {}
Run Code Online (Sandbox Code Playgroud)