MEF和WPF自定义导入定义
问题描述:
我有这个想法尝试使用自定义的IMPORT属性来根据条件新建一个类。举例来说,如果我有:MEF和WPF自定义导入定义
[导入( “Position_32”)]如果我在运行32位操作系统,然后这应该存在:
[导入( “Position_64”),如果im运行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
以获取适当的元数据,并使用该特定元数据平台,在运行时。
此外,您可以为强类型元数据(而不是字符串)创建自定义界面。有关详情,请参阅Exports and Metadata。
不错。我看看这些。非常感谢 – 2011-05-25 16:30:28