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