(Func <iinterface>)和(Func <task <iinterface>&gt;)

时间:2017-07-28 12:09:35

标签: c#

为什么在下一个代码示例的(Func<IInterface>)(Func<Task<IInterface>>)之间出现模糊的调用错误?如何在不替换方法组调用的情况下避免此错误?

public class Program
{
    public static void Main(string[] args)
    {
        Method(GetObject);
    }

    public static IInterface GetObject() => null;

    public static void Method(Func<IInterface> func) => 
        Console.WriteLine("First");

    public static void Method(Func<Task<IInterface>> funcAsync) => 
        Console.WriteLine("Second");
 }

 public interface IInterface { }

1 个答案:

答案 0 :(得分:1)

这将解决问题,因为您的方法需要一个返回IInterface

的函数
public class Program
{
    public static void Main(string[] args)
    {
        Method(() => GetObject());
    }

    public static IInterface GetObject() => null;

    public static void Method(Func<IInterface> func) =>
        Console.WriteLine("First");

    public static void Method(Func<Task<IInterface>> funcAsync) =>
        Console.WriteLine("Second");
}

public interface IInterface { }