C# 如何从不同的程序集中检索类的接口?

C# 如何从不同的程序集中检索类的接口?,c#,reflection,C#,Reflection,在WCF中,通常将接口和实现类放在单独的程序集中。我正在构建一个基于配置创建WCF代理类的类(无论是从web.config中的服务或serviceActivations,还是从svc文件中的Service属性)。在我的类中,我希望检索可从服务类分配的接口-在类和接口位于同一程序集中的情况下,这很容易: Type type = Type.GetType("MyNamespace.MyClass, MyAssembly"); if (type != null) { var interface

在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发现而不是自己做这项工作-不幸的是,在我的情况下,这不是一个选项。

事实证明,有一个名为“GetInterfaces()”的简便反射方法可以提供以下信息:

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

我想你应该看看MEF或Unity