【发布时间】:2016-10-13 16:01:35
【问题描述】:
我正在尝试使用 Autofac 实现以下依赖注入场景。
假设我有三个类,A、B 和 P。A 类拥有一个 P 类型的属性,并且还有一个对 B 的引用,需要在运行时注入。
class A
{
private B _b;
public P Prop { get; set; }
InitializeProp()
{ ... }
}
同时,B类依赖于P的一个实例:
class B
{
private P _p;
}
现在,最重要的细节是:我需要以某种方式将 P 的实例注入 B。但是,该实例必须是类 A 中的 Prop,它仅在 A 中的 InitializeProp() 被调用后才被初始化。假设 InitializeProp() 可以在对象的生命周期中调用,比 A 的构造函数晚。
Autofac 可以实现这种情况吗?
我尝试做这样的事情,但我得到一个循环引用异常,大概是当 B 被进一步解决时:
containerBuilder.RegisterType<A>().SingleInstance();
containerBuilder.Register<Func<P>>(c =>
{
var a = c.Resolve<A>();
return () => a.Prop;
});
【问题讨论】:
标签: c# .net dependency-injection autofac