我試圖使用Autofac實現以下依賴注入場景。推遲使用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;
}
現在,最重要的細節:我需要以某種方式注入分爲B P的一個實例然而,實例必須是來自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;
});
理想我按照你的建議設計我的課程,P通過A和B中的構造函數注入。然而,我的真實場景受到其他依賴性的限制,並且長話短說,沒有辦法規避A級中的屬性P,該屬性在A的一生中的某個點被初始化。 A實現了一個聲明屬性P的接口。 –