2
我已經爲MEF中的ImportMany創建了自定義元數據屬性,但ImportMany始終爲空。ImportMany不能使用自定義元數據屬性
[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; }
任何人都可以預測,我哪裏出錯了。
您還可以添加IModuleMetadata的聲明嗎?它是否具有匹配的只讀屬性? –
昨天,我能夠導入,當我從類中刪除默認的構造函數。如果該類具有一些代碼的無參數構造函數。導入不起作用。另外,我必須從出口中刪除合同名稱,即我必須使用合同類型進行出口。 –
我還有一個名爲Settings的其他自定義導出,但現在ImportMany for settings包含來自ModuleExport的類型。我不知道爲什麼。兩者都有不同的元數據接口,但具有相同的合約類型 –