我正在尝试注册一个名为“BigEye.Business”的dll文件,并引用该文件到mvc 3项目中。但是当我尝试获取该dll中的对象实例时,autofac会显示未注册。以下是我注册和解析对象的方式:
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中的对象和服务将随着时间的推移而变化。
谢谢。