编辑:看起来他们并不是简单的方法。鉴于类结构的大小,foreach方法似乎是实现我的目标最简单(也可能是最好)的方法。我打开问题,万一有人有个好主意。 :)
大家好,
我有一个类似于此结构的类列表:
class A
{
...
}
class B
{
...
public List<A> ListOfA {...}
}
class C
{
...
public List<A> ListOfA {...}
public List<B> ListOfB {...}
}
class D
{
...
public List<A> ListOfA {...}
public List<B> ListOfB {...}
public List<C> ListOfC {...}
}
[...]
我需要在最外层的类(在这种情况下为D)中创建一个方法,它具有以下签名:
public IEnumerable<A> GetListOfA();
它将以递归方式(yield)返回D实例中包含的A实例列表。
当前的实现是一个硬编码的foreach列表。我想通过动态查看每个类和子类的属性来使事情变得更灵活。
为了给您提供更多细节,类结构是从FxCop XML报告创建的。 FxCop消息可以链接到命名空间,模块,类型,成员等.XML被反序列化为此类结构,消息可以在结构的不同级别找到。
我想要实现的实际上相当于类结构上的XPath //A
。
您是否了解如何实施此类方法?
非常感谢您的帮助
答案 0 :(得分:1)
您可以使用反射来检查特定类型的方法或属性是否存在(Type.GetMethods ...),或者是否存在具有特定返回类型的方法。
答案 1 :(得分:0)
我认为你不应该尝试,如果你想要达到这个能力,我建议你保留D中所有A的集合,这将观察你们所有的孩子,孩子会观察他们的孩子等等。