Вывод типа возврата метода расширения из его использования в качестве параметра метода - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь понять, почему универсальный тип может быть выведен в одном случае, но не в другом. Возврат группы методов из объекта позволяет сделать вывод, который я пытаюсь сделать, однако использование метода расширения для возврата группы методов предотвращает вывод ... См. Комментарии «Работает» «Не работает» ниже.

Ошибка 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
    {

    }
...