【问题标题】:Access Members of ObjectA from contained ObjectB从包含的对象访问 ObjectS 的成员
【发布时间】:2021-10-29 08:50:54
【问题描述】:

如果我在对象树中有多个级别的对象包含:

ObjectA 包含一个List<ClassB> ObjectBs
=> ObjectB 包含一个 List<ClassC> ObjectCs
===> 等等……

是否有一种简单的方法/设计模式可以通过其包含的成员 Object C 访问 ObjectA 的变量/成员?

例如:

nameOfObjectA = ObjectC.GetUpmostContainer().GetName()

目前我正在递归地实例化树,据我所知,我需要在对象的每个实例化上传递 ObjectA 的名称,该对象将包含在 ObjectA 中。

【问题讨论】:

    标签: c# class design-patterns tree


    【解决方案1】:

    我建议为每个对象添加一个“父对象”,并在子对象的构造函数中强制设置父对象。

    理想情况下,父类型是所有对象/类都实现的接口。

    所以基本上它会是这样的:

    interface MyNodeBase
    {
        public MyNode Parent {get;}
        public string Name {get;}
    }
    
    class MyNode1 : MyNodeBase
    {
        public MyNode1(MyNodeBase parent)
        {
        }
    ...
    }
    

    这样您就可以向上导航直到您感兴趣的点。您可以向界面添加任何有用的属性/方法。

    干杯

    【讨论】:

    • 感谢您的回答。我想过这个想法,但是一旦我得到一棵树,对象 A 有一个 ObjectB 列表,一个 ObjectB 有一个 ObjectAs 列表,这个解决方案不再那么干净了,因为 ObjectA 现在也必须实现该接口,尽管有些 ObjectAs永远不会有父母。
    • 嗨,在顶部你说你有一个树状结构。在您的评论中,您描述了一个类似图形的结构 - 因此解决方案在很大程度上取决于您的结构的性质。
    • ObjectA 也必须实现该接口 - 将父级设置为“null”将表示一个根节点
    猜你喜欢
    • 1970-01-01
    • 2011-03-06
    • 2020-12-16
    • 1970-01-01
    • 2011-04-07
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多