0

在此处输入图像描述

该示例显示了我的场景。我有一个BaseClass,它具有一些很好的功能,派生类SpecialClass使用它。但是BaseClass有一个类型为BaseClass的ParentSpecialClass需要一个类型为SpecialClassParent ,因为我不想每次使用它时都强制转换 - 更好的安全转换 - 父级。为了解决这种情况,我使用关键字new来创建此属性的重载。这同样适用于BaseConnection和其他一些属性。

不幸的是,我讨厌这个关键字,在我看来,它总是代表缺乏好的设计。但在这种情况下,我显然不知道如何更好地解决这个问题。有人有想法吗?

问候, Yggdrasil

4

1 回答 1

-1

为什么不使用类似的东西(例如):

public class Base
{

    public virtual Base Parent { get {return ...}}

    public virtual BaseConnection Connection { get {return ... ;}}
}

public class Special : Base
{

    public override Base Parent { get {return MySpecialParent;}}

    public override BaseConnection Connection { get {return new SpecialConnection();}}
}

甚至类似的东西(如果 BaseConnection 和 SpecialConnection 之间没有关系):

public class Base
{

    public virtual dynamic Parent { get {return ...}}

    public virtual dynamic Connection { get {return ... ;}}
}

public class Special : Base
{

    public override dynamic Parent { get {return MySpecialParent;}}

    public override dynamic Connection { get {return new SpecialConnection();}}
}

但是也许你应该再考虑一下你的类分离,也许你应该从基类的创建者那里注入特定的关系,或者使用某种容器并使用接口来代替。只是一个想法 ... :)

于 2013-09-26T20:28:35.803 回答