"BigEye.Business"という名前のDLLを登録しようとしていて、そのファイルをmvc 3プロジェクトに参照しています。しかし、私はそのdllでオブジェクトのインスタンスを取得しようとすると、autofacはそれが登録されていないと言います。ここで私はオブジェクトを登録し、解決方法を示します。Assembly.Loadを使用したAutofacレジスタのDLL
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』は登録されていない」を得ます。私はビジネスDLLのすべてのコンポーネントを登録する必要がありますか?それを行う方法はありますか?ビジネスにおけるオブジェクトとサービスは時間的に変化するためです。
おかげ
プロジェクトのdllへの参照を追加するだけではありませんか? –
さて、私はそれを行うことができますが、私はそれを注入したい... – mehmetserif
それは 'builder.RegisterAssemblyTypes(サービス);'は何をすることになっていますか?私はあなたがその行が実際にやっていることを理解することができたら、それに踏み込んでみようと思います。アセンブリ間に継承がありますか?つまり、ビジネスアセンブリで実装されているインタフェースを定義するアセンブリへの参照を追加できますか? – Rup