我有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(托管扩展框架),也可以让它导出正确的IWeapon而不是仅按名称显示对象。
如果实现了所有接口(interface)点,MEF可以为我做“鸭子”打字并返回代理对象吗?
最佳答案
我认为它在MEF的早期版本中存在(通过为该类动态发出IL并返回它),现在将其删除。真的没有道理。毕竟,应该将您的类设计为通过特定的接口(interface)实现该外接程序功能。如果您可以向其添加诸如Export
属性之类的东西,那么您也应该完全能够在您的类上实现接口(interface)。
关于c# - MEF(托管扩展框架)是否进行 "duck"输入?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1140983/