在我的代码中,我试图动态解析哪个类型参数应用于通用方法调用。
private int FooResolver<T1, T2>(bool condition, Func<int> fooMethod)
{
if (condition)
{
return fooMethod<T1>();
}
return fooMethod<T2>();
}
我创建了一个包装方法,该方法接受两个类型参数,并根据条件决定使用哪个参数。但是,似乎C#不允许这种行为。有什么特殊原因吗?我的代码是否有可行的解决方法?
编辑
看到响应后,我决定将类型定义推迟到处理程序方法的调用者:
private int FooResolver(bool condition, Func<int> foo1, Func<int> foo2)
{
if (condition)
{
return foo1();
}
return foo2();
}
...
private int Bar()
{
return FooResolver(myCondition, MyMethod<FirstType>, MyMethod<SecondType>);
}
委托不是打开通用方法或方法组的抽象;它们是对specific