作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一部分代码具有如下所示的依赖关系:
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/
我有一部分代码具有如下所示的依赖关系: public class MyPage : Page //ASPX WebForms page { public IPersonBl PersonBl
我是一名优秀的程序员,十分优秀!