我需要用通用的List返回类型定义一个委托,这样做的最佳方法是什么?

delegate List<T> TestDelegate(string arg1, string arg2);


那我想做

TestDelegate td = new TestDelegate(Method1);


或这个

TestDelegate td = new TestDelegate(Method2);


方法1和方法2的签名:

List<MyClass1> Method1(string arg1, string arg2)
List<MyClass2> Method2(string arg1, string arg2)


有没有办法做到这一点?

最佳答案

您可以使委托本身通用:

delegate List<T> TestDelegate<T>(string arg1, string arg2);

var td1 = new TestDelegate<MyClass1>(Method1);
var td2 = new TestDelegate<MyClass2>(Method2);


请注意委托声明中的其他<T>

10-08 19:37