Dot-Net
可以使用 MEF 來獲取標記的類的 System.Type和xport和Xp○r噸Export?
我已經成功地使用 MEF 來獲取導出的類實例。但是,我遇到了一種情況,我需要列舉一組導出的派生類而不實例化它們。我查看了
CompositionContainer的文件,它似乎只能返回對象實例。我知道我可以在每個派生類中有一個靜態類型欄位並將其導出,或者進行我自己的反射,但我想知道是否有一種內置方法來使用
[Export]屬性標記類,然後列舉它們的System.Type.
正如 leppie 所說,沒有內置的方法可以做到這一點。這是設計使然。導出和類型之間不一定存在一對一的映射(例如,任何數量的部分都可以具有 String 類型的屬性導出)。此外,對於不同的程式模型,元件可能來自配置文件或動態程式語言,因此嘗試獲取與其關聯的 CLR 類型可能沒有多大意義。
根據您嘗試執行的操作的範圍,您還可以使用 System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices 引入的 API 以支持預設目錄的記憶體。假設您使用的是標準的屬性化程式模型,並且您知道所有
$$ Export $$是在類型級別(即它們不在成員上),那麼您可以在目錄中的每個部分上呼叫 GetPartType(part) 來獲取類型。 正如 Daniel 指出的那樣,如果您使用的是其他程式模型,那麼這對您不起作用,但如果您只使用 MEF 附帶的預設目錄,那麼它應該可以完成這項工作。