2009-06-24 65 views
11

我有一個場景,我必須從我的CompositionContainer實例中獲取一個輸出,但是我只有一個類型可以使用;我不知道編譯時的類型,因此我無法以普通的通用方式檢索導出的對象。從一個MEF容器獲取一個只有一個Type實例的輸出

通常你會做到這一點:

_container.GetExportedObject<IMyType>(); 

但在我的情況,我有這樣的:

Type someType = ... ; 
_container.HowDoIGetTheExport(someType); 

任何想法?

回答

20

找到了答案:

var export = _container.GetExports(someType, null, null).FirstOrDefault(); 
1

創建使用Type.MakeGeneric動態調用.....

http://geekswithblogs.net/marcel/archive/2007/03/24/109722.aspx

+1

這並不能幫助我調用容器上的通用方法。 ..我認爲你沒有正確地閱讀我的問題。 – 2009-06-24 11:51:40

+0

我看到你有一個特定的答案 - 優秀。我的答案是更一般的,因爲從Type可以在運行時構造一個泛型方法調用。我們使用它來構建調用時只有接口已知的調用,但運行實例可以從外部源提供。 – 2009-06-24 12:20:19