gpt4 book ai didi

c# - 在 C# 和 .Net 中强制执行父子关系

转载 作者:太空狗 更新时间:2023-10-29 20:12:13 25 4
gpt4 key购买 nike

让我们学习以下两个类:

public class CollectionOfChildren
{
public Child this[int index] { get; }
public void Add(Child c);
}

public class Child
{
public CollectionOfChildren Parent { get; }
}

Child 的 Parent 属性应始终返回 Child 所在的 CollectionOfChildren,如果该 child 不在此类集合中,则返回 null。在这两个类之间,这个不变量应该被维护,并且不应该被类的消费者破坏(好吧,很容易)。

您如何实现这种关系? CollectionOfChildren 无法设置 Child 的任何私有(private)成员,那么应该如何通知 Child 它已添加到集合中呢?(如果 child 已经是集合的一部分,则抛出异常是可以接受的。)


已经提到了internal 关键字。我目前正在编写一个 WinForms 应用程序,所以一切都在同一个程序集中,这与 public 本质上没有什么不同。

最佳答案

public class CollectionOfChildren
{
public Child this[int index] { get; }
public void Add(Child c) {
c.Parent = this;
innerCollection.Add(c);
}
}

public class Child
{
public CollectionOfChildren Parent { get; internal set; }
}

关于c# - 在 C# 和 .Net 中强制执行父子关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/982796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com