gpt4 book ai didi

c# - 如何解决循环引用?

转载 作者:IT王子 更新时间:2023-10-29 04:29:50 27 4
gpt4 key购买 nike

您如何解决循环引用问题,例如 A 类将 B 类作为其属性之一,而 B 类将 A 类作为其属性之一?

如何为这类问题做架构师?

如果以NHibernate为例,对象之间会存在父子关系。

它如何处理这些父子场景?

最佳答案

在大多数情况下,当我不得不让两个事物互相引用时,我创建了一个接口(interface)来删除循环引用。例如:

之前

public class Foo
{
Bar myBar;
}

public class Bar
{
Foo myFoo;
}

依赖图:

Foo     Bar
^ ^
| |
Bar Foo

Foo 依赖于 Bar,但 Bar 也依赖于 Foo。如果它们位于单独的程序集中,您将在构建时遇到问题,尤其是在您进行干净重建时。

之后

public interface IBar
{
}

public class Foo
{
IBar myBar;
}

public class Bar : IBar
{
Foo myFoo;
}

依赖图:

Foo, IBar     IBar
^ ^
| |
Bar Foo

Foo 和 Bar 都依赖于 IBar。没有循环依赖,如果 IBar 放在它自己的程序集中,Foo 和 Bar 位于单独的程序集中将不再是一个问题。

关于c# - 如何解决循环引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6928387/

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