मैं "BigEye.Business" नामक एक डीएलएल पंजीकृत करने की कोशिश कर रहा हूं और उस फ़ाइल को एमवीसी 3 प्रोजेक्ट में संदर्भित करता हूं। लेकिन जब मैं उस डीएलएल में किसी ऑब्जेक्ट का उदाहरण प्राप्त करने का प्रयास करता हूं, तो ऑटोफैक कहता है कि यह पंजीकृत नहीं है।असेंबैक रजिस्टर डीएलएल असेंबली.लोड
private static IContainer SetDIContainer()
{
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterType<UserAuthManager>().As<IUserAuth>().InstancePerHttpRequest();
builder.RegisterType<SessionManager>().As<ISession>().InstancePerHttpRequest();
//Here is the code to register that dll
var services = Assembly.Load("BigEye.Business");
builder.RegisterAssemblyTypes(services);
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
return container;
}
public static T GetInstance<T>()
{
IContainer container = SetDIContainer();
using(var httpRequestScope = container.BeginLifetimeScope("httpRequest"))
{
return httpRequestScope.Resolve<T>();
}
}
और जब मैं GetInstance फ़ंक्शन को कॉल मैं मिल "का अनुरोध सेवा 'BigEye.Interfaces.Business.IUser' पंजीकृत नहीं किया गया है": यहाँ मैं कैसे रजिस्टर और हल वस्तु है। क्या मुझे बिजनेस डीएलएल में सभी घटकों को पंजीकृत करना चाहिए? क्या इसे करने का कोई तरीका है? क्योंकि व्यवसाय में वस्तुओं और सेवाओं को समय में बदल जाएगा।
धन्यवाद
क्या आप इस परियोजना में अपने डीएलएल का संदर्भ नहीं जोड़ सकते हैं? –
वैसे मैं ऐसा कर सकता हूं लेकिन मैं इसे इंजेक्ट करना चाहता हूं ... – mehmetserif
यही है कि 'बिल्डर। रजिस्ट्रार एस्पेरियल्स टाइप (सेवाएं);' ऐसा करना है, है ना? मैं उसमें कदम उठाने की कोशिश करता हूं यदि आप यह काम कर सकते हैं कि वास्तव में वह पंक्ति क्या कर रही है। क्या आपके पास असेंबली के बीच कोई विरासत है, यानी क्या आप उस असेंबली का संदर्भ जोड़ सकते हैं जो इंटरफेस को परिभाषित करता है कि आपकी व्यावसायिक असेंबली कम से कम लागू होती है? – Rup