我需要将一个对象实例注册到容器中。由于在编译时无法确定T的类型,因此无法使用通用的ComposeExportedValue<T>
。
我需要的方法类似于这样:container.RegisterInstance(Type someType, object instance)
有什么想法吗?
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);
}