2009-08-18 5 views
5

Sau khi nhận được danh sách các loại cụ thể trong một hội đồng sử dụng sự phản chiếu thành công, bây giờ tôi muốn nhận được các thuộc tính công khai của mỗi người trong số đó.Khi sử dụng tính năng phản chiếu để nhận các thuộc tính, Làm cách nào để giới hạn tìm kiếm của tôi chỉ với lớp con mà tôi quan tâm?

Mỗi loại này xuất phát từ ít nhất một lớp cơ sở.

Tôi nhận thấy khi tôi nhận được các thuộc tính trên một kiểu mà tôi cũng nhận được các thuộc tính từ các lớp cơ sở.

Tôi cần một cách để lọc ra các thuộc tính lớp cơ sở và chỉ lấy lại thuộc tính cho loại mà tôi đang gọi nhận được các thuộc tính.

Tôi cho rằng nó sẽ tương tự như cách tôi chỉ nhận các lớp con của một loại cơ sở, không bao gồm loại cơ sở, từ một loại cơ sở nhất định.

Assembly.GetAssembly(baseType).GetTypes().Where(type => type.IsSubclassOf(baseType)).ToList() 

Trả lời

11

Sử dụng BindingFlags.DeclaredOnly trong lệnh gọi Type.GetProperties:

var properties = Type.GetProperties(BindingFlags.DeclaredOnly | 
            BindingFlags.Public | 
            BindingFlags.Instance); 
+0

@ towps- thấy đây để đọc thêm về nó: http://msdn.microsoft.com/en-us/library/kyaxdd3x.aspx – RichardOD

+0

@Richard: sẽ thêm liên kết ... –

+0

Cảm ơn mọi người! Tôi đã không chắc chắn tại sao chỉ gắn cờ DeclaredOnly đã không nhận được tôi bất cứ điều gì. Có vẻ như bạn yêu cầu công chúng và ví dụ? DeclareOnly và Public vẫn không giúp tôi gì cả. – topwik

2

sử dụng cờ ràng buộc BindingFlags.DeclaredOnly trong phương pháp GetProperties