C#获取类型的成员
示例
using System; using System.Reflection; using System.Linq; public class Program { public static void Main() { var members = typeof(object) .GetMembers(BindingFlags.Public | BindingFlags.Static| BindingFlags.Instance); foreach (var member in members) { bool inherited = member.DeclaringType.Equals( typeof(object).Name ); Console.WriteLine($"{member.Name} is a {member.MemberType}, " + $"it has {(inherited ? "":"not")} been inherited."); } } }
输出(请参阅有关输出顺序的注释):
GetType is a Method, it has not been inherited. GetHashCode is a Method, it has not been inherited. ToString is a Method, it has not been inherited. Equals is a Method, it has not been inherited. Equals is a Method, it has not been inherited. ReferenceEquals is a Method, it has not been inherited. .ctor is a Constructor, it has not been inherited.
我们也可以使用GetMembers()不传递任何的BindingFlags。这将返回该特定类型的所有公共成员。
需要注意的一件事是,GetMembers它不会以任何特定顺序返回成员,因此切勿依赖于GetMembers返回您的顺序。
观看演示