Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ';无法隐式转换类型';尝试从委托获取返回的对象时_C#_.net_Delegates_.net 3.5 - Fatal编程技术网

C# ';无法隐式转换类型';尝试从委托获取返回的对象时

C# ';无法隐式转换类型';尝试从委托获取返回的对象时,c#,.net,delegates,.net-3.5,C#,.net,Delegates,.net 3.5,我得到了这个错误 Order x = GetOrder(); OrderResult myResult = GetDispatcherForOrder(x); 无法将类型“System.Func”隐式转换为“OrderResult” 如何获取OrderResult?这是因为您试图将委托分配给OrderResult对象。我想你可能想写: Cannot implicitly convert type 'System.Func<Order, OrderResult>' to 'Orde

我得到了这个错误

Order x = GetOrder();
OrderResult myResult = GetDispatcherForOrder(x);
无法将类型“System.Func”隐式转换为“OrderResult”

如何获取OrderResult?

这是因为您试图将委托分配给
OrderResult
对象。我想你可能想写:

Cannot implicitly convert type 'System.Func<Order, OrderResult>' to 'OrderResult'
Func myResult=GetDispatcherForOrder(x);
你可能想要这样的东西:

Order x = GetOrder();
OrderResult myResult = GetDispatcherForOrder(x);

对于必须有委托的情况(代码中没有任何内容告诉我您有委托):


但是如何获取OrderResult对象呢?@HélderGonçalves使用Func myResult=GetDispatcherForOrder;OrderResult resultObj=myResult(x);不过,在本例中,您可以使用一个只返回OrderResult的普通方法。
Func<Order, OrderResult> myResult = GetDispatcherForOrder(x);
private Func<Order, OrderResult> GetDispatcherForOrder(Order order)
Order x = GetOrder();
OrderResult myResult = GetDispatcherForOrder(x);
private OrderResult GetDispatcherForOrder(Order order)
{
    switch (order.Type)
    {
        case "A":
            return DispatchA(order.Id, order.Info, ...);
        case "B":
            return DispatchB(order.Id, order.Info, ...);
        default:
            throw new ArgumentOutOfRangeException("order.Type");
    }
}
private Func<Order, OrderResult> GetDispatcherForOrder(Order order)
{
    switch (order.Type)
    {
        case "A":
            return dispatcher => DispatchA(order.Id, order.Info, ...);
        case "B":
            return dispatcher => DispatchB(order.Id, order.Info, ...);
        default:
            throw new ArgumentOutOfRangeException("order.Type");
    }
}

Order x = GetOrder();
Func<Order, OrderResult> myFunction = GetDispatcherForOrder;
OrderResult myResult = myFunction(x);
private OrderResult GetDispatcherForOrder(Order order)
{
    switch (order.Type)
    {
        case "A":
            return DispatchA(order.Id, order.Info, ...);
        case "B":
            return DispatchB(order.Id, order.Info, ...);
        default:
            throw new ArgumentOutOfRangeException("order.Type");
    }
}

Order x = GetOrder();
OrderResult myResult = GetDispatcherForOrder(x);