Type.GetProperties 方法返回一个 PropertyInfo[] 但 PropertyInfo 是 Abstract

问题描述 投票:0回答:1

在 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# 中实例化。这是文档中的拼写错误还是返回了其他内容?

c# .net abstract-class
1个回答
0
投票

你是对的,

PropertyInfo
是抽象的。问题是,
GetProperties()
实际上返回
RuntimePropertyInfo
PropertyInfo
的子类),这不是抽象的。它是
internal sealed
所以你仍然无法实例化,但运行时可以。

foreach (var p in typeof(Exception).GetProperties())
    Console.WriteLine($"{p.Name} - {p.GetType().FullName} - {p.GetType().IsAbstract}");

© www.soinside.com 2019 - 2024. All rights reserved.