मेरे पास एक सजावट है जिसमें कुछ अन्य निर्भरताएं हैं जिन्हें कंटेनर का उपयोग करके हल किया जाना चाहिए। उदाहरण:सभी निर्भरताओं को मैन्युअल रूप से निर्दिष्ट किए बिना ऑटोफैक में एक सजावटी को पंजीकृत करें
public class FooDecorator : IFoo
{
public FooDecorator(IFoo inner, IBar bar, IBaz baz)
}
मैं इस तरह इस रजिस्टर कर सकते हैं:
builder.RegisterType<Foo>().As<IFoo>();
builder.RegisterDecorator<IFoo>((c, inner) =>
new FooDecorator(inner, c.Resolve<IBar>(), c.Resolve<IBaz>()), "key");
यह काम कर रहा है, फिर भी है कि अच्छा नहीं मैं मैन्युअल रूप से अन्य सभी निर्भरता निर्दिष्ट करने के लिए है। मुझे क्या करना चाहते हैं:
builder.RegisterDecorator<FooDecorator, IFoo>("key");
कहाँ IFoo
'आंतरिक' IFoo
और अन्य निर्भरता कंटेनर से हल कर रहे हैं करने के लिए हल हो गई है। यह संभव है, या मैं एक समारोह है कि इस व्यवहार का परिणाम देगा के साथ एक डेकोरेटर रजिस्टर कर सकते हैं?
यह बहुत ही बढ़िया है, लेकिन अगर आपको पता नहीं है (या देखभाल) कि 'IFoo' का विशिष्ट कार्यान्वयन' Foo' है? यह "सजाने जो वर्तमान में' FooDecorator' साथ 'IFoo' को हल करने है" की तर्ज पर कुछ घोषणा करने के लिए संभव है? (यह मानते हुए कि IFoo पहले 'IFoo' प्रदान करने के लिए पंजीकृत किया गया, लेकिन जरूरी नहीं कि एक _named_ सेवा के रूप में) - पी एस मुझे लगता है कि यह है कि क्या ओ पी, के लिए देख रहा था भी –
@CristiDiaconescu वहाँ यह करने के लिए कोई आसान समाधान है और करने के लिए एक नामित निर्दिष्ट किए बिना पहले डेकोरेटर आप Autofac कंटेनर में 2 पंजीकरण करना होगा। यदि आप कैसे प्राप्त करने के लिए आप चाहते हैं क्या पर अधिक विस्तार चाहते हैं एक नया सवाल पूछने के लिए स्वतंत्र महसूस करें। –