如何在CodeRush中获取实现接口的类?

发布于 2024-11-18 02:23:03 字数 425 浏览 3 评论 0原文

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

像我这样的一些方法

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

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

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

示例:

在此处输入图像描述

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

提前致谢。

I was trying to write a method that returns a list of classes that implements an Interface, but could not do it.

Some method like

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

I tried to use interface1.AllChildren and many other tries. Non of them gave any results.

Is it possible to write such a method using DXCore APIs?

EXAMPLE:

enter image description here

If I pass Interface1, I should get Class1 and Class2 from the method GetImplementedClasses.

Thanks in Advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

朦胧时间 2024-11-25 02:23:03

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;
}

There's a "GetDescendants" method in the Intrerface class that might be useful for your task. The code will look similar to this:

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;
}
乖不如嘢 2024-11-25 02:23:03

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

Assembly.GetExecutingAssembly().GetAvailableTypes(
    typeFilter: t => 
        (t != typeof(interfaceType)) 
        && 
        typeof(interfaceType).IsAssignableFrom(t));

I'm not sure about dxcore, but in regular C# I've written an extension method which gets all the Types available in a deployment; you could use it like this:

Assembly.GetExecutingAssembly().GetAvailableTypes(
    typeFilter: t => 
        (t != typeof(interfaceType)) 
        && 
        typeof(interfaceType).IsAssignableFrom(t));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文