ImportMany不使用自定义元数据属性

时间:2013-12-10 23:01:04

标签: c# wpf mef caliburn.micro

我在MEF中为ImportMany创建了一个自定义元数据属性,但ImportMany始终为null。

[MetadataAttribute]
[AttributeUsage(AttributeTargets.Class ,AllowMultiple = false)]
public class ModuleAttribute : ExportAttribute ,IModuleMetadata
{
    public ModuleAttribute(string contract)
        : base(typeof(IScreen))
    {
        Name = contract;
        Region = Region.Sidebar;
        IsVisible = true;
    }

    public string Name { get; set; }
    public string Module { get; set; }
    public Region Region { get; set; }
    public string DisplayName { get; set; }
    public bool IsVisible { get; set; }
    public string Description { get; set; }
    public short Order { get; set; }
    public Permissions Permissions { get; set; }
}

以下是我如何导出课程。

[Module("Stock" ,Module = "Stock" ,Order = 1 ,Permissions = Permissions.View)]
    internal sealed class StockWorkSpaceViewModel : Screen

屏幕为typeof(IScreen)

这是我的ImportMany。

[ImportMany]
public IEnumerable<Lazy<IScreen ,IModuleMetadata>> Modules { get; set; }

任何人都可以预测,我哪里出错了。

1 个答案:

答案 0 :(得分:0)

  1. 检查ComponnetContainer.ComposeParts
  2. 检查必须相同的导出和导入属性
  3. 检查海关属性和您在延迟初始化中使用的界面。该属性必须相同。这意味着海关属性类实现了隐式初始化隐式。