autofac विकि पृष्ठ के बारे में Circular References उपयोग करने के लिए कहते हैं:Autofac 2.4.5 के साथ परिपत्र संदर्भों को कैसे संभालें?
cb.Register<DependsByProp>().OnActivated(ActivatedHandler.InjectUnsetProperties);
लेकिन जैसे ActivatedHandler 2.4.5 में अब मौजूद नहीं है यह लग रहा है। स्रोत में चारों ओर खोदने पर, मुझे उस वर्ग के कार्यान्वयन को मिला, और इसलिए मैंने इसके बजाय ऑनएक्टिव में विधि कार्यान्वयन किया। दुर्भाग्यवश, यह अभी भी काम नहीं करता है।
मैंने यहां एक न्यूनतम रेपो लगाया है जो विकी पेज पर क्या था।
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);
}
}
यह कोड अभी भी एक स्टैक ओवरफ़्लो अपवाद फेंकता है क्योंकि संकल्प का प्रयास किया जाता है। मैं क्या खो रहा हूँ? सर्कुलर निर्भरताओं को संभालने के लिए ऑटोफैक प्राप्त करने का सही तरीका क्या है?
हां। मैंने सोचा कि परिपत्र निर्भरता का मतलब उदाहरण चक्र के समान है। नीचे दिए गए आपके उत्तर ने कक्षाओं और उदाहरणों के बीच परिपत्र निर्भरताओं की अवधारणाओं के बारे में क्या खोया था, यह बताया। – Ants