【发布时间】:2018-01-06 13:37:03
【问题描述】:
我有一个抽象类,它是下面的方法签名:
protected abstract TResponse Handle<TResponse>(T command)
在一个覆盖它的类中,我有如下内容:
protected override TResponse Handle<TResponse>(ListFilmsByIdCommand command)
{
return 9;
}
但是,由于它无法将 int 转换为 TResponse,因此无法编译。如果我将TResponse 更改为int 或其他DTO 类型类,它也会失败。
有没有办法拥有抽象方法并覆盖它,以便我可以返回任何我想要的类型?
【问题讨论】:
-
我不认为你可以用不同的返回类型覆盖它。您最好的选择似乎是返回对象类型而不是 TResponse。
-
您的方法使用泛型,因此调用者可以定义返回的类型。如果调用者执行 var x = Handle
(command) 那么返回一个 int 是有意义的。但是如果调用者做了 var x = Handle - >(command) 呢?然后你应该返回一个字符串列表。