4
我必須將一個對象實例註冊到容器中。我不能使用通用的ComposeExportedValue<T>
,因爲我不知道在編譯時T是什麼。向MEF註冊實例
我需要的方法是這樣的:container.RegisterInstance(類型SOMETYPE,對象實例)
任何想法?
我必須將一個對象實例註冊到容器中。我不能使用通用的ComposeExportedValue<T>
,因爲我不知道在編譯時T是什麼。向MEF註冊實例
我需要的方法是這樣的:container.RegisterInstance(類型SOMETYPE,對象實例)
任何想法?
這裏的ComposeExportedValue的一個版本,是不是通用的:
public static void ComposeExportedValue(this CompositionContainer container, string contractName, object exportedValue) {
if (container == null)
throw new ArgumentNullException("container");
if (exportedValue == null)
throw new ArgumentNullException("exportedValue");
CompositionBatch batch = new CompositionBatch();
var metadata = new Dictionary<string, object> {
{ "ExportTypeIdentity", AttributedModelServices.GetTypeIdentity(exportedValue.GetType()) }
};
batch.AddExport(new Export(contractName, metadata,() => exportedValue));
container.Compose(batch);
}
public static void ComposeExportedValue(this CompositionContainer container, object exportedValue) {
if (container == null)
throw new ArgumentNullException("container");
if (exportedValue == null)
throw new ArgumentNullException("exportedValue");
ComposeExportedValue(container, AttributedModelServices.GetContractName(exportedValue.GetType(), exportedValue);
}
你確定這個工程?我知道容器 - >組成參數名稱不匹配,除此之外,代碼仍然不起作用。 – yang 2010-05-16 09:51:07
好吧,我的錯。更正合同名稱可解決問題。非常感謝! – yang 2010-05-16 09:52:45