【发布时间】:2021-03-22 18:02:54
【问题描述】:
上下文
我有一个场景,我希望定义几个Bar 类,每个类都必须定义自己的Request、Response 和Error 类。出于这个原因,我写了一个抽象的Foo 类,意图强制实现。
Request、Response 和Error 共享一个基类PDU,并且必须实现它们各自的接口。每个Bar 都需要一个足够唯一的Request、Response 和Error,它们必须独立定义。
此外,每个Bar 的Request、Response 和Error 不应在Bar 之外实例化,因此类定义应该嵌套似乎是正确的(至少对我而言) .
问题
是否可以覆盖子级中的嵌套类定义,继承自抽象父级?或者至少通过另一种方法达到同样的效果?
非法示例
下面是一个非法代码示例,说明我想如何编写它:
public abstract class Foo
{
public class Request: PDU, IRequest
{ }
public class Response : PDU, IResponse
{ }
public class Error : PDU, IException
{ }
}
public class Bar : Foo
{
public override Request
{
// Definition of Request goes here
}
public override Response
{
// Definition of Response goes here
}
public override Error
{
// Definition of Error goes here
}
}
【问题讨论】:
-
嵌套类层次结构?为什么不使用单独的程序集和内部类?
-
听起来更像是你想公开一个接口而不是覆盖嵌套类。
-
为什么要关心实现接口的类的名称?只需将
PDU的实例传递给任何需要请求、错误或响应的BL。您似乎使您的问题过于复杂,只是省略了所有这些讨厌的嵌套类并从头开始重新思考:您的实际类是什么以及它们有什么依赖关系? -
@Dennis 我想我是在遵循使用嵌套类的建议“当封闭类仅对封闭类有用时”并且可能(我还不确定)场景中嵌套类可能需要访问封闭类的私有成员。当然,这可能是错误的方法,而您的传统建议可能更适合。
-
你想如何使用这些类?这种情况会有很大帮助。请详细说明您想要实现的目标,而不是您认为可能的解决方案。
标签: c# inheritance overriding abstract-class