Próbuję zarejestrować dll o nazwie "BigEye.Business" i odwołuje się do tego pliku do projektu mvc 3. Ale kiedy próbuję uzyskać instancję obiektu w tej bibliotece, autofac mówi, że nie jest zarejestrowany. Oto w jaki sposób mogę się zarejestrować i rozwiązać obiektu:Autofac zarejestrować dll przy użyciu Assembly.Load
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>();
}
}
i kiedy wywołanie funkcji GetInstance otrzymuję „Żądana usługa«BigEye.Interfaces.Business.IUser»nie została zarejestrowana”. Czy powinienem zarejestrować wszystkie składniki w bibliotece dll? Czy jest jakiś sposób na zrobienie tego? Ponieważ obiekty i usługi w Biznesie będą się zmieniać w czasie.
Dzięki
Czy możesz nie tylko dodać odniesienie do biblioteki DLL w projekcie? –
Cóż, mogę to zrobić, ale chcę go wstrzyknąć ... – mehmetserif
To właśnie powinno robić 'builder.RegisterAssemblyTypes (services) ;, czyż nie? Próbowałbym się do tego przyłożyć, jeśli potrafimy zrozumieć, co właściwie robi ta linia. Czy posiadasz dziedziczenie między złożeniami, tzn. Czy możesz dodać odniesienie do zespołu, który definiuje interfejsy, które przynajmniej twój zestaw biznesowy implementuje? – Rup