我试图理解为什么可以在一个实例中推断出泛型类型,而在另一个实例中却无法推断出泛型类型的原因。从对象中返回方法组允许我尝试进行推断,但是使用扩展方法返回方法组可防止推断...请参见下面的“工作”“无效”注释。
错误为The type arguments for the method DoKungFoo<TFoo, TTarget>(Foo<TFoo>) cannot be inferred from the usage
感谢您的输入!
public class Foo<T>
{
public IEnumerable<TTarget> KungFoo<TTarget>(IEnumerable<TTarget> type)
{
return type;
}
}
public static class FooExtensions
{
public static Func<IEnumerable<TTarget>, IEnumerable<TTarget>> DoKungFoo<TFoo, TTarget>(this Foo<TFoo> foo)
{
if(foo == null)
{
return null;
}
return foo.KungFoo;
}
}
public class Driver()
{
public void Test(Foo<Bar> foo)
{
//Works
Bed(foo.KungFoo);
//Doesn't Work
Bed(foo.DoKungFoo())
}
public void Bed(Func<IEnumerable<Baz>, IEnumerable<Baz>> func)
{
}
}
public class Bar
{
}
public class Baz
{
}