2013-03-14 70 views
2

在WCF中,通常將接口和實現類放在單獨的程序集中。我正在構建一個基於配置創建WCF代理類的類(無論是從我的web.config中的service或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發現而不是自己做這項工作 - 不幸的是,它不是我的情況下的選項。

+0

我想你應該看看MEF或Unity – 2013-03-15 01:56:28

回答

1

原來有一個名爲「GetInterfaces()」一個方便的反射法,可以提供這個信息:

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