私は右だ場合、ライブラリはサードパーティのコンポーネントではありません、あなたは実装を変更することができます!もしそうなら、私はMEFを使うことを勧めます。これは.Netフレームワークの一部であり、必ずしも参照されていない他のアセンブリからコンポーネントを読み込んで、必要なものを正確にサポートします。あなたのライブラリーで
は、エクスポート属性でアプリあなたの中に使用するクラスを宣言する必要があります。
[Import(typeof(IInterface))] public IInterface myClase;
:
[Export(typeof(IInterface))] class MyClass : IInterface{ }
そして、あなたのクライアントアプリケーションでは、あなたがコンポーネントをインポートすることができます
最後に、すべてのインポートとエクスポートを作成することができます:
var catalog = new AggregateCatalog();
// add assamby by type
catalog.Catalogs.Add(new AssemblyCatalog(typeof (AnyType).Assembly));
// add assembly by path
// this example adds all assembly in the current directory that ends with "Extension.dll".
catalog.Catalogs.Add(new DirectoryCatalog(@".", "*Extensions.dll"));
var container = new CompositionContainer(catalog);
// compose parts: MEF composes all imports and exports
container.ComposeParts(this);
「参照しなくてもライブラリを呼びたい」という意味は? – SeM
その理由から、インタフェースがあります。クライアントはLibrary1、Library2、Library3を気にするべきではありません。ライブラリの新しいインスタンスを直接呼び出すと、インタフェースの目的が失われます。 – sis