WindowsのAutofacを使用しています。参照アセンブリをロードしようとすると、アプリケーションは実装されていますが、インタフェースの実装がそこに含まれている必要があります。以下の方法は、アセンブリをロードします。参照されているすべてのアセンブリをコード内で明示的に使用していないとしても、
private IEnumerable<Assembly> GetReferencedAssemblies(Assembly assembly)
{
var assemblyNames = assembly.GetReferencedAssemblies();
List<Assembly> assemblies = new List<Assembly>();
assemblies.Add(assembly);
foreach (var item in assemblyNames)
{
var loadedAssembly = System.Reflection.Assembly.Load(item.FullName);
assemblies.Add(loadedAssembly);
}
return assemblies;
}
我々はアセンブリに含まれるオブジェクトへのダミーの参照を行う場合、それはアセンブリをロードし、種類がautofacによって構築されている、我々はダミーのオブジェクトを削除する場合アセンブリはno含まれています。
オブジェクトを直接使用しているかどうかにかかわらず、参照されているアセンブリをすべて含める方法はありますか(インターフェイスの実装がそこにあるので、依然として必要です)。
これは、ビン内のすべてのDLLをロードするだけで、ASP.NET上で正常に動作します。
これには少なくとも2つの方法があります。私がMEFを使う状況のように聞こえる。すべてのアセンブリに[Autofac Module](https://code.google.com/p/autofac/wiki/StructuringWithModules)を置き、MEFを使用してすべてのモジュールを取得すると、Autofacが引き継ぐことができます。 –