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