У меня есть 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 выполнить для меня печать "утка" и вернуть прокси-объект, если все точки интерфейса реализованы?