无法隐式转换类型ResponseBase为Response。

4
Response response = new Response();

这是显示错误的行 '无法隐式将类型 ResponseBase 转换为 Response':

response = await BaseFlow.Invoke(jsonRawRequest, response);

...并且它正在调用:

public static async Task<ResponseBase> Invoke(JToken jsonRawRequest, ResponseBase responseBase)
        {...}

...这是 Response 类:

class Response : ResponseBase
    {
    // empty
    }

...以及ResponseBase

public class ResponseBase
    {...}

为什么会发生这种情况?难道不应该是“无法隐式转换类型Response为ResponseBase”而不是反过来吗?因为我正在尝试将一个Response类传递给接受ResponseBase的方法?如何解决?
我在网上浏览了一下,它声称我应该能够将派生类传递给接受基类的方法。

你将 await Invoke 函数的返回值 ResponseBase 赋值给类型为 Response 的变量。因此,你试图将父类实例分配给派生类型的变量。 - Evk
1个回答

3

问题不在于您试图将response作为参数传递时。

当您尝试将Invoke的结果(ResponseBase类型)分配给response变量(Response类型)时,会出现错误。

要解决这个问题,只需将response类型更改为ResponseBase即可:

ResponseBase response = new Response();

或者使用一个新的ResponseBase变量。

1
啊啊啊。谢谢。我太糊涂了。当然。我会在5分钟内接受你的答案,所以在那之前...谢谢! - b0x0rz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接