在這裏工作是我的元數據:MEF ImportMany不Caliburn.Micro
[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;
}
但始終我MODS的結束是null
。
更新:
[Module("Unit", Module = "Stock")]
class UnitViewModel : BaseViewModel, ICUDB, IHandle<UnitModel>
{
有趣的是,當我問使用GetExport。我得到所有15個導出的類。
var ex = container.GetExports<IScreen, JIMS.Common.Interface.IModuleMetadata>();
向我們展示如何使用ModuleAttribute。問題可能在於此。 – 2013-04-11 09:38:51
我已經更新了我的問題 – 2013-04-11 13:53:26