3

我试图编写一个返回实现接口的类列表的方法,但无法做到。

一些方法如

  public List<Class> GetImplementedClasses(Interface Interface1)
   {
        . . . 
   }

我尝试使用 interface1.AllChildren 和许多其他尝试。他们都没有给出任何结果。

是否可以使用 DXCore API 编写这样的方法?

例子:

在此处输入图像描述

如果我通过 Interface1,我应该从方法 GetImplementedClasses 中获取 Class1 和 Class2。

提前致谢。

4

2 回答 2

4

Intrerface 类中有一个“GetDescendants”方法可能对您的任务有用。代码将与此类似:

public List<Class> GetImplementedClasses(Interface Interface1)
{
  List<Class> result = new List<Class>();
  if (Interface1 != null)
  {
    ITypeElement[] descendants = Interface1.GetDescendants();
    foreach (ITypeElement descendant in descendants)
    {
      if (!descendant.InReferencedAssembly)
      {
        Class classDescendant = descendant.ToLanguageElement() as Class;
        if (classDescendant != null)
          result.Add(classDescendant);
      }
    }
  }
  return result;
}
于 2011-06-30T19:40:26.510 回答
1

我不确定 dxcore,但在常规 C# 中,我编写了一个扩展方法,它可以获取部署中可用的所有类型;你可以像这样使用它:

Assembly.GetExecutingAssembly().GetAvailableTypes(
    typeFilter: t => 
        (t != typeof(interfaceType)) 
        && 
        typeof(interfaceType).IsAssignableFrom(t));
于 2011-06-30T20:41:17.257 回答