我试图编写一个返回实现接口的类列表的方法,但是无法做到。
某种方法,如
public List<Class> GetImplementedClasses(Interface Interface1)
{
. . .
}
我尝试使用interface1.AllChildren和许多其他尝试。他们没有给出任何结果。
是否可以使用DXCore API编写这样的方法?
实施例
如果我通过Interface1,我应该从方法GetImplementedClasses获得Class1和Class2。
先谢谢。
答案 0 :(得分:4)
Interface类中有一个可能对您的任务有用的“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;
}
答案 1 :(得分:1)
我不确定dxcore,但是在常规C#中,我编写了an extension method,它可以获得部署中可用的所有类型;你可以像这样使用它:
Assembly.GetExecutingAssembly().GetAvailableTypes(
typeFilter: t =>
(t != typeof(interfaceType))
&&
typeof(interfaceType).IsAssignableFrom(t));