gpt4 book ai didi

c# - AutoFac:PropertyWiringFlags.AllowCircularDependencies 有什么作用?

转载 作者:太空狗 更新时间:2023-10-29 23:25:45 28 4
gpt4 key购买 nike

我有一部分代码具有如下所示的依赖关系:

public class MyPage : Page //ASPX WebForms page
{
public IPersonBl PersonBl { get; set; }

}

public class PersonBl : IPersonBl
{

public PersonBl(ISomeMagicBl magicBl){...}

}

public class SomeMagicBl : ISomeMagicBl
{
public IPersonBl PersonBl { get; set; }

public SomeMagicBl(/*Other dependencies*/) {...}
}

我的模块配置如下所示

...
builder.RegisterAssemblyTypes(ThisAssembly).Where(t => t.Name.EndsWith("BL")).AsImplementedInterfaces().PropertiesAutowired(PropertyWiringFlags.AllowCircularDependencies).InstancePerLifetimeScope();
...

可以看出,我的类中有循环依赖,我可以使用 ..PropertiesAutowired(PropertyWiringFlags.AllowCircularDependencies)....

我的问题:这个标志在幕后究竟做了什么来解决这些循环依赖??

最佳答案

该标志更改了从构造时间到创建图的其余部分之后为类型完成属性注入(inject)的时间点。它依赖于循环中具有某种共享(单例或按请求)的一个或多个组件——即使有标志,如果所有组件都是实例依赖,那么一种循环仍然存在。

如果没有该标志,Autofac 会将组件的所有依赖项(无论属性与否)视为让任何其他组件获得对它的引用的先决条件。默认情况下,这更可靠。

关于c# - AutoFac:PropertyWiringFlags.AllowCircularDependencies 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8152465/

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