का उपयोग कर ऑटोफैक प्रतिनिधि कारखाना मैं ऑटोफैक के साथ प्रतिनिधि कारखाने पैटर्न को समझने की कोशिश कर रहा हूं। मुझे पता है कि IIndex <> बंद() पंजीकरण, जो यहाँ में अच्छी तरह से समझाया गया है के साथ का उपयोग कर कारखाना लागू करने के लिए: Configuring an Autofac delegate factory that's defined on an abstract classfunc <>
मुझे पता है कि अगर मैं समारोह <> का उपयोग कर एक कारखाने बना सकते हैं चाहते हैं, और मैं कैसे करेंगे निम्न नमूना के लिए पंजीकरण:
public enum Service
{
Foo,
Bar
}
public interface FooService : IService
{
ServiceMethod();
}
public interface BarService : IService
{
ServiceMethod();
}
public class FooBarClient
{
private readonly IService service;
public FooBarClient(Func<Service, IService> service)
{
this.service = service(Service.Foo);
}
public void Process()
{
service.ServiceMethod(); // call the foo service.
}
}
तुम सिर्फ क्यों उपयोग नहीं करते 'IIndex <>' 'keyed()' के साथ? Autofac आपके लिए यह 'Func <सेवा, IService>' नहीं बना सकता है। आपको 'कंटेनर()' या 'नामांकित()' का उपयोग करने के साथ अपने कंटेनर में पंजीकरण करने की आवश्यकता है: 'बिल्डर। रजिस्ट्रार> (सी => एस => सी। रेसोल्वकेड (ओं)); 'प्रतिनिधि कारखाने केवल पैरामीटर के साथ एक प्रकार बना सकते हैं और पैरामीटर के आधार पर एक प्रकार का चयन नहीं कर सकते क्योंकि यह' IIndex <> 'है। –
nemesv
IIndex के लिए <> मुझे ऑटोफैक लाइब्रेरी का संदर्भ देने की आवश्यकता होगी जिसे मैं टालने का प्रयास कर रहा हूं। मैं चाहता हूं कि मेरा डीआई कोड समग्र रूट (अलग पुस्तकालय) में हो, यदि संभव हो तो। –