Я пытаюсь понять, почему универсальный тип может быть выведен в одном случае, но не в другом. Возврат группы методов из объекта позволяет сделать вывод, который я пытаюсь сделать, однако использование метода расширения для возврата группы методов предотвращает вывод ... См. Комментарии «Работает» «Не работает» ниже.
Ошибка 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
{
}