我的解決方案中有一個靜態類,用於處理各種程序集。我想通過MEF鏈接他們,所以我在課堂上做了一個領域。C#使用靜態類的MEF
[Import(typeof(A))]
static private A _a1;
然後,我有一個方法,而我通過裝配名作爲參數:
public static A LoadPackage(string filePath)
{
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(filePath));
var _container = new CompositionContainer(catalog);
???
}
那麼,現在有一種方法從裝配通過指定文件路徑來導入類型?
我不能這樣做:
_container.ComposeParts(this);
,因爲類是`靜態無論是我能做到這一點
_container.ComposeParts(_a1);
(這可能是完全錯誤的開始),因爲A
不有任何構造函數(所以_a1
爲空)
是否有一個原因,它需要是靜態的?你導入/導出的任何東西默認都是Singelton,在大多數情況下比靜態類更好。 – eandersson 2012-01-09 09:29:43
這是我正在考慮的選項之一。保持靜態的原因是我不想在我的項目中更改代碼(即 - 我很懶+)) – noaRAVE 2012-01-09 09:45:09
我很確定你不能直接使用靜態類與MEF,但我不會當然不知道。 – eandersson 2012-01-09 09:46:00