ASP.NET MVC プロジェクトで作業しているとしましょう。これは、単一のソリューション内のさまざまなプロジェクトに分割されたレイヤーです。各プロジェクトには、依存関係を結び付けるために作成された autofac モジュールがあります。ここで、アセンブリをスキャンして、すべてのモジュールをコンテナーに登録します。
ここで共有されているものと同様の拡張メソッドを採用しましたhttp://goo.gl/VJEct
public static void RegisterAssemblyModules(this ContainerBuilder builder, Assembly
assembly)
{
var scanningBuilder = new ContainerBuilder();
scanningBuilder.RegisterAssemblyTypes(assembly)
.Where(t => typeof(IModule).IsAssignableFrom(t))
.As<IModule>();
using (var scanningContainer = scanningBuilder.Build())
{
foreach (var m in scanningContainer.Resolve<IEnumerable<IModule>>())
builder.RegisterModule(module);
}
}
私の最初の質問は、このサンプルが数年前に提供されたことを考えると、これは現在のバージョンの autofac で使用するのにまだ実行可能な構造ですか?
次に、MVC アプリは他のレイヤーの機能に依存しているため、.InstancePerHttpRequest() で型を登録する必要がある場合があります。ただし、Web アプリケーション以外からそれらを参照し、System.Web に依存しないようにするオプションも必要です。これらの異なるコンテキストで使用できるモジュールを登録するための最良の方法は何ですか?