2011-05-12 44 views
20

Tôi đang cố gắng đọc tất cả các thuộc tính của một đối tượng cụ thể, chỉ đọc các thuộc tính được khai báo trên loại đối tượng, loại trừ các thuộc tính được thừa hưởng. IE:Nhận các thuộc tính không được thừa kế

class Parent { 
    public string A { get; set; } 
} 

class Child : Parent { 
    public string B { get; set; } 
} 

Và vì vậy tôi chỉ muốn lấy lại B. Đọc tài liệu, tôi cho rằng dưới đây là những gì tôi cần, nhưng điều đó thực sự không trả lại gì cả.

var names = InstanceOfChild.GetType().GetProperties(BindingFlags.DeclaredOnly).Select(pi => pi.Name).ToList(); 
+0

nhờ cho câu hỏi này, tôi đã được chỉ kéo tóc của tôi ra trên –

Trả lời

22

Chỉ cần một vài BindingFlags khác

var names = InstanceOfChild.GetType().GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance).Select(pi => pi.Name).ToList(); 
5

Hãy thử điều này:

var names = InstanceOfChild.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly).Select(pi => pi.Name).ToList(); 

tôi thêm BidningFlags.InstanceBindingFlags.Public các thông số tìm kiếm mà theo MSDN documentation trân trọng:

Chỉ định rằng các thành viên dụ là để được bao gồm trong Tìm kiếm.

Chỉ định rằng các thành viên công cộng để được bao gồm trong tìm kiếm.

+1

này đó là truy cập trực quan với tôi rằng cờ Instance được yêu cầu ở đây –

Các vấn đề liên quan