Registering instances with MEF
I have to register an object instance into a container. I can't use the generic ComposeExportedValue<T>
since I don't know what T is at compile time.
The method I need is some开发者_高级运维thing like this: container.RegisterInstance(Type someType, object instance)
Any ideas?
Here's a version of ComposeExportedValue that is not generic:
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);
}
精彩评论