【问题标题】:MEF and WPF custom import definitionMEF 和 WPF 自定义导入定义
【发布时间】:2011-05-25 15:33:42
【问题描述】:

我有这个想法尝试使用自定义 IMPORT 属性来根据条件新建一个类。例如,如果我有:

[Import("Position_32")] 如果我运行的是 32 位操作系统,这应该存在,然后:

[Import("Position_64")] 如果我运行的是 64 位操作系统。有没有办法根据条件使属性的类型名称动态化?

从概念上讲,它可能看起来像这样:

[Import(((IsWIN64()) ? "Position_64" : "Position_32"))] 这不起作用,因为类型名称需要是常量。

我想让适当的职位类别的更新尽可能透明。我的意思是我使用 funcs 做了一个基于工厂的方法来获得我想要的效果,但我很想为此使用 MEF。想法?

非常感谢,

大卫

【问题讨论】:

    标签: wpf mef


    【解决方案1】:

    你可以像这样使用ExportMetadataAttribute

    [Import("Position")]
    [ExportMetadata("Platform", "32bit")]
    public YourType ...
    

    然后,当你去导入时,使用:

     [ImportMany]
     public Lazy<YourType,IDictionary<string,object>>[] Positions { get; set; }
    

    然后,您可以检查 Dictionary 以获取适当的元数据,并在运行时使用该特定平台。

    此外,您可以为强类型元数据(而不是字符串)创建自定义接口。详情请见Exports and Metadata

    【讨论】:

    • 不错。生病看看这些。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 2019-03-19
    • 2011-09-20
    • 1970-01-01
    相关资源
    最近更新 更多