私は2つのアセンブリを持っています:
アセンブリ1:
interface IWeapon {
int Might { get; }
}
[Export("sword")]
public class Sword : IWeapon {
public int Might {
get { return 10; }
}
}
アセンブリ2:
interface IWeapon {
int Might { get; }
}
var catalog = new AssemblyCatalog(typeof(Ninja.Sword).Assembly);
var container = new CompositionContainer(catalog);
// not allowed to use the IWeapon def in assembly 2
var sword = container.GetExportedValue<IWeapon>("sword");
私はこれを機能させる方法を知っています。MEF(Managed Extensibility Framework)にオブジェクトを要求するか、オブジェクトを名前だけでなく、正しいIWeaponをエクスポートするように取得することができます。
すべてのインターフェイスポイントが実装されている場合、MEFは「ダック」タイピングを実行してプロキシオブジェクトを返すことができますか?