我有四个类(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/