在 C# 文档中,Type 类的 GetProperties 方法返回属性信息数组:System.Reflection.PropertyInfo[]。您可以在此处的文档中看到这一点:
https://learn.microsoft.com/en-us/dotnet/api/system.type.getproperties?view=net-8.0
但是,PropertyInfo 类在文档中被标记为抽象:
https://learn.microsoft.com/en-us/dotnet/api/system.reflection.propertyinfo?view=net-8.0
想知道这是怎么可能的,因为抽象类无法在 C# 中实例化。这是文档中的拼写错误还是返回了其他内容?
你是对的,
PropertyInfo
是抽象的。问题是,GetProperties()
实际上返回RuntimePropertyInfo
(PropertyInfo
的子类),这不是抽象的。它是 internal sealed
所以你仍然无法实例化,但运行时可以。
foreach (var p in typeof(Exception).GetProperties())
Console.WriteLine($"{p.Name} - {p.GetType().FullName} - {p.GetType().IsAbstract}");