「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 に登録する必要がありますか? それを行う方法はありますか?ビジネスのオブジェクトとサービスは時間とともに変化するためです。
ありがとう