循环访问自身内部类的实例

本文关键字:实例 内部类 访问 循环 | 更新日期: 2023-09-27 17:57:06

(我没有创建这个,但我必须使用它)

class Person{
  public string Name {
    get;
    private set;
  }
  public static Person P1 = new Person("name1");
  public static Person A1 = new Person("aName1");
  public static Person ZX1 = new Person("NameZX");
  public static Person P2 = new Person("name2");
  .
  .
  public static Person P20 = new Person("name20");    
}

我需要遍历所有这些实例,我认为它涉及反思,但我不确定具体如何。

@Selman22,谢谢,现在我必须循环这些人

forach(var p in persons)
{
}

但是p是一个FieldInfo对象,我如何将其更改回Person(强制转换不起作用)

循环访问自身内部类的实例

您可以使用

如下Reflection获取字段:

var persons = typeof(Person)
             .GetFields(BindingFlags.Public | BindingFlags.Static)
             .Where(x => x.Name.StartsWith("P"));

或:

var persons = typeof(Person)
              .GetFields(BindingFlags.Public | BindingFlags.Static)
              .Where(x => x.GetValue(null) is Person);
foreach(var p in persons)
{
    var currentPerson = p.GetValue(null) as Person;
    ...
}

您可以将它们全部放在数组中,然后执行此操作:

var people = new[]
{
    Person1,
    Person2,
    ...
    Person20
};
foreach (var person in people)
{
    ...
}