c# - 在 C# 中使用派生返回类型覆盖抽象属性

标签 c# inheritance overriding abstract derived

我有四个类(class)。请求、派生请求、处理程序、派生处理程序。 Handler 类有一个具有以下声明的属性:

public abstract Request request { get; set; }

DerivedHandler 需要覆盖此属性,以便它返回 DerivedRequest:

public override DerivedRequest request { get; set; }

有人对如何使这项工作有任何想法吗?

最佳答案

这并不是构建事物的好方法。执行以下操作之一

1) 只是不要改变返回类型,在子类中正常覆盖它。在 DerivedHandler 中,您可以使用 Request 的基类签名返回 DerivedRequest 的实例。如果愿意,任何使用它的客户端代码都可以选择将其转换为 DerivedRequest

2) 如果泛型不应该是多态的,请改用泛型。

public abstract class HandlerBase<T> where T: Request
{
    public abstract T Request {get;set;}
}

public class Handler: HandlerBase<Request>()

public class DerivedHandler: HandlerBase<DerivedRequest>()

关于c# - 在 C# 中使用派生返回类型覆盖抽象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6351025/

相关文章:

javascript - 是否可以从基类[node JS]中的静态方法实例化子类?

没有虚拟析构函数的 C++ 继承

c# - 正在寻找其他方法来隐藏子类的抽象继承方法?

C#:CommandLineParser 如何解析URL?

c# - Zebra EPL/ZPL 上的 .NET 网络套接字打印

c# - Visual Studio mac 2019(社区)-PresentationCore-找不到 .Net Framework 4 的程序集

c# - 扁平化关键集合项目的集合 Linq

c++ - 多重继承。这个实现 `+=` 的继承模型背后的想法是什么?

arrays - 如何在 typescript 中扩展和覆盖数组方法

android - 按后退按钮取消异步任务下载