簡體   English   中英

出口工廠

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM