如何解决MEF和WPF定制导入定义
| 我有这个想法,尝试使用自定义IMPORT属性根据条件来创建新的类。例如,如果我有: [Import(\“ Position_32 \”)]如果我运行的是32位操作系统,则应该存在此名称,然后: [Import(\“ Position_64 \”)]如果我运行的是64位操作系统。有什么方法可以根据条件使属性的类型名称动态化吗? 从概念上讲,它可能像这样: [导入((((IsWIN64())?\“ Position_64 \”:\“ Position_32 \”))]这不起作用,因为类型名需要为常量。 我想尽可能透明地更新适当的职位类别。我的意思是我使用funcs进行了基于工厂的方法来获得想要的效果,但是我很乐意为此使用MEF。有想法吗? 非常感谢, 大卫解决方法
您可以这样使用ExportMetadataAttribute:
[Import(\"Position\")]
[ExportMetadata(\"Platform\",\"32bit\")]
public YourType ...
然后,当您导入时,请使用:
[ImportMany]
public Lazy<YourType,IDictionary<string,object>>[] Positions { get; set; }
然后,您可以在运行时检查Dictionary
以获取适当的元数据,并使用该特定平台。
另外,您可以为强类型元数据(而不是字符串)创建自定义界面。有关详细信息,请参见导出和元数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。