【问题标题】:How to retrieve interface for a class from a different assembly?如何从不同的程序集中检索类的接口?
【发布时间】:2013-03-18 20:27:53
【问题描述】:

在 WCF 中,将接口和实现类放在单独的程序集中是很常见的。我正在构建一个基于配置创建 WCF 代理类的类(无论是来自我的 web.config 中的服务或 serviceActivations 还是来自 svc 文件中的 Service 属性)。在我的类中,我想检索可从服务类分配的接口 - 在类和接口位于同一程序集中的情况下,这很容易:

Type type = Type.GetType("MyNamespace.MyClass, MyAssembly");
if (type != null)
{
    var interfaces =
    Assembly.GetAssembly(type)
            .GetTypes()
            .Where(t => t.IsInterface && t.IsAssignableFrom(type));               
}

没有通过获取所有程序集(使用 CurrentDomain.GetAssemblies())并以这种方式查找接口来使用一些蛮力反射解决方案,是否有规定的方法从不同(未知)程序集获取接口?

另外,我知道使用 WCF 发现而不是自己做这项工作 - 不幸的是,在我的情况下,这不是一个选项。

【问题讨论】:

  • 我认为你应该看看 MEF 或 Unity

标签: c# reflection


【解决方案1】:

原来有一个名为“GetInterfaces()”的方便反射方法可以提供此信息:

Type type = Type.GetType(activation.Service);
if (type != null)
   Type[] interfaces = type.GetInterfaces();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多