这是我的元数据:
[MetadataAttribute]
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class ModuleAttribute : ExportAttribute, IModuleMetadata
{
public ModuleAttribute(string Contract) : base(Contract,typeof(IScreen))
{
Region = Region.Sidebar;
IsVisible = true;
Order = short.MaxValue;
Description = string.Empty;
}
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 interface IModuleMetadata
{
string Module { get; set; }
Region Region { get; set; }
string DisplayName { get; set; }
bool IsVisible { get; set; }
string Description { get; set; }
short Order { get; set; }
}
我正在使用:
[ImportMany]
public IEnumerable<Lazy<IScreen, IModuleMetadata>> Mods
{
get;
set;
}
但我的 Mod 总是以null
.
更新:
[Module("Unit", Module = "Stock")]
class UnitViewModel : BaseViewModel, ICUDB, IHandle<UnitModel>
{
有趣的是,当我询问使用 GetExport 时。我得到了所有 15 个导出的类。
var ex = container.GetExports<IScreen, JIMS.Common.Interface.IModuleMetadata>();