【问题标题】:Getting an export from an MEF container given only a Type instance仅给定 Type 实例从 MEF 容器获取导出
【发布时间】:2009-06-24 11:33:26
【问题描述】:

我有一个场景,我必须从我的 CompositionContainer 实例中获取导出,但我只有一个类型可以使用;我不知道编译时的类型,因此我无法以正常的通用方式检索导出的对象。

通常你会这样做:

_container.GetExportedObject<IMyType>();

但就我而言,我有这个:

Type someType = ... ;
_container.HowDoIGetTheExport(someType);

有什么想法吗?

【问题讨论】:

    标签: c# mef


    【解决方案1】:

    找到答案:

    var export = _container.GetExports(someType, null, null).FirstOrDefault();
    

    【讨论】:

    • 是的,这是大多数泛型重载使用的核心方法,因此这是获得它的最佳方法。
    • 别忘了你在export.Value中寻找的东西
    【解决方案2】:

    使用 Type.MakeGeneric 动态创建调用.....

    http://geekswithblogs.net/marcel/archive/2007/03/24/109722.aspx

    【讨论】:

    • 这并不能帮助我在容器上调用通用方法...我认为您没有正确阅读我的问题。
    • 我看到你有一个具体的答案 - 很好。从某种意义上说,我的回答更笼统,您可以在运行时构造泛型方法调用。我们使用它来构造调用,其中在编译时只知道接口,但运行实例可以从外部源提供。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多