8
我想注册一个名为“BigEye.Business”的dll并将该文件引用到mvc 3项目。但是,当我尝试获取该DLL中的对象的实例时,autofac说它没有注册。这是我如何注册和解析的对象:Autofac注册DLL使用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>();
}
}
当我打电话的GetInstance功能我得到“所请求的服务‘BigEye.Interfaces.Business.IUser’尚未注册”。我应该注册Business dll中的所有组件吗?有没有办法做到这一点?因为Business中的对象和服务会随时间而改变。
感谢
你不能只是在项目中添加一个对你的DLL的引用? –
那么我可以做到这一点,但我想注入它...... – mehmetserif
这就是'builder.RegisterAssemblyTypes(services);'应该做的,不是吗?如果你能确定这条线实际上在做什么,我会尝试进入。您的程序集之间是否有任何继承关系,即,您是否可以添加对组件的引用,以定义您的业务程序集至少实现的接口? – Rup