[英]ExportFactory<T,TMetaData - Get type of class which derives from T
我正在使用MEF,這是組成MEF dll的類成員:
IEnumerable<ExportFactory<ITask,IMetaData>> myTasks
我需要發現每個myTasks元素的派生類型是什么。 就是說,如果我加載了一個MEF dll,其中包含一個名為Task1的類,該類實現了ITask,我想獲取Task1的類型。
IEnumerable<ExportFactory<ITask,IMetaData>> myTasks; //lets assume I composed all the MEF components in here
foreach (var task in myTasks)
{
//here I want to get somethink LIKE:
string innerDerivedType = task.innerType.Name //should return Task1
}
問題是我不知道如何獲得“真實”類型。 有人可以協助嗎?
謝謝
因為您將所有工廠存儲在IEnumerable<ExportFactory<ITask,IMetaData>>
,所以無法在不執行工廠的CreateExport()方法的情況下確定ITask的實際類型(我假設您不想這樣做)然而)。
話雖這么說:您正在將ExportFactory <,>與MetaData一起使用,因此可以擴展IMetaData使其包含TaskType屬性。 這將導致:
IEnumerable<ExportFactory<ITask,IMetaData>> myTasks = ...;
foreach (var task in myTasks)
{
Type taskType = task.Metadata.TaskType;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.