循环访问自身内部类的实例
本文关键字:实例 内部类 访问 循环 | 更新日期: 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)
{
...
}