Với Type.GetProperties()
bạn có thể truy xuất tất cả thuộc tính của lớp hiện tại và thuộc tính public
của lớp cơ sở. Có phải bằng cách nào đó có thể nhận được các thuộc tính private
của lớp cơ sở không?Nhận các thuộc tính/phương thức riêng của lớp cơ sở với sự phản ánh
Cảm ơn
class Base
{
private string Foo { get; set; }
}
class Sub : Base
{
private string Bar { get; set; }
}
Sub s = new Sub();
PropertyInfo[] pinfos = s.GetType().GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
foreach (PropertyInfo p in pinfos)
{
Console.WriteLine(p.Name);
}
Console.ReadKey();
này sẽ chỉ in "Bar" vì "Foo" là trong cơ sở hạng nhất và tư nhân.
Ngoài ra, có thể lặp qua các loại cơ sở (type = type.BaseType), cho đến khi type.BaseType rỗng, để có được một bức tranh hoàn chỉnh. –
tiếc là điều này không làm việc cho các thuộc tính riêng của lớp cơ sở. chỉ dành cho thừa kế công cộng và được bảo vệ – Fabiano
@Fabiano - không công khai bao gồm riêng tư. –