AutoFac wiki sayfası hakkında Circular References kullanmayı diyor ki:Autofac 2.4.5 ile dairesel referanslar nasıl kullanılır?
cb.Register<DependsByProp>().OnActivated(ActivatedHandler.InjectUnsetProperties);
Ama ActivatedHandler 2.4.5 yılında artık yok gibi görünüyor. Kaynakta etrafta dolaşırken, o sınıfın uygulamasını buldum ve bunun yerine OnActivated'de yöntem uygulamasına girdim. Ne yazık ki, bu hala çalışmıyor.
Burada Wiki sayfasında olana benzeyen minimal bir repro yerleştirdim.
class M
{
public VM VM { get; set; }
public M()
{
}
}
class VM
{
public VM(M m)
{
}
}
[Fact]
void CanResolveCircular()
{
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterType<VM>();
builder.RegisterType<M>().OnActivated(e => e.Context.InjectUnsetProperties(e.Instance));
using (var container = builder.Build())
{
var m = container.Resolve<M>();
Assert.NotNull(m);
}
}
Bu kod, Resolve girişimi başarısız olduğunda yığın taşması istisnası atmaya devam eder. Neyi kaçırıyorum? Dairesel bağımlılıkları ele almak için Autofac'ı edinmenin doğru yolu nedir?
Evet. Dairesel bağımlılıkların örnek döngüleri ile aynı anlama geldiğini düşündüm. Aşağıdaki cevabınız, sınıflar ve örnekler arasındaki dairesel bağımlılık kavramları hakkında eksik olduğumu gösterdi. – Ants