2010-10-14 34 views
8

Tôi biết BindingFlags được sử dụng để tìm nạp thành viên công khai và không công khai từ một Loại. Tuy nhiên, có cách nào để xác định xem một cá thể MemberInfo (hoặc có nguồn gốc như PropertyInfo, MethodInfo) là công khai hay không (sau khi nó được trả về từ một trong các phương thức trên Type)?Làm cách nào để xác định khả năng truy cập của một cá thể MemberInfo?

Thanx, Marc

Trả lời

7

PropertyInfo, MethodBase vv mỗi người đều có một tài sản trong đó có thông tin này Attributes - nhưng không có gì trong MemberInfo, bởi vì mỗi loại viên có loại riêng của mình thuộc tính enum. Thật khó chịu như vậy, tôi nghĩ rằng bạn có thể cần phải xử lý từng lớp con MemberInfo riêng biệt :(Bạn có thể bật MemberInfo.MemberType và sau đó truyền, sẽ là nhẹ hơn đẹp hơn nhiều chi nhánh as/test-for-null nhưng nó vẫn không lý tưởng: (

if (member.MemberType == MemberTypes.Property) 
{ 
    var property = (PropertyInfo) member; 
    ... 
} 
+0

Ah, tôi thấy. PropertyInfo không có PropertyAttribues để cho biết khả năng truy cập của nó. Vì vậy, tôi cần có các phương pháp Accessor và đi với những điều đó. – obiwanjacobi

+1

@obiwanjacobi: Có lẽ đó là bởi vì bạn có thể có khả năng truy cập khác nhau để nhận và đặt. –

+0

Bạn có thể lấy Propertyinfo từ MemberType như thế nào? tái là không có diễn viên. –

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