2010-10-14 17 views
8

मुझे पता है कि बाइंडिंगफ्लैग का उपयोग सार्वजनिक और गैर-सार्वजनिक सदस्यों को एक प्रकार से लाने के लिए किया जाता है।मैं सदस्यInfo उदाहरण की पहुंच कैसे निर्धारित कर सकता हूं?

लेकिन क्या यह निर्धारित करने का कोई तरीका है कि कोई सदस्यइन्फो उदाहरण (या PropertyInfo, MethodInfo जैसे व्युत्पन्न) सार्वजनिक है या नहीं (इसे टाइप करने के तरीकों में से किसी एक से वापस लौटाया गया है)?

Thanx, मार्क

उत्तर

7

PropertyInfo, MethodBase आदि प्रत्येक एक Attributes संपत्ति जो इस जानकारी नहीं है है - लेकिन MemberInfo में कोई बात नहीं है, क्योंकि सदस्य हर प्रकार की विशेषताओं enum की अपनी ही तरह है। घृणित यह है के रूप में, मुझे लगता है कि आप सकता हैMemberInfo से प्रत्येक उपवर्ग अलग बर्ताव करने की जरूरत :(आप शायद MemberInfo.MemberType पर स्विच कर सकते हैं और फिर डाली है, जो as/परीक्षण के लिए अशक्त शाखाओं के बहुत से थोड़ा अच्छे हो जाएगा, लेकिन यह अभी भी आदर्श नहीं है :(

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

आह, मैं देख रहा हूँ। मैं यह भी देखना है कि PropertyInfo अपनी पहुंच-योग्यता इंगित करने के लिए PropertyAttribues जरूरत नहीं है। इसलिए मैं accessor तरीकों हो और उन। अपने explaination के लिए thanx के साथ जाने की जरूरत है। – obiwanjacobi

+1

@obiwanjacobi: संभवतः ऐसा इसलिए है क्योंकि आप प्राप्त करने और सेट के लिए अलग-अलग पहुंच सकते हैं। –

+0

आप सदस्य प्रकार से Propertyinfo कैसे प्राप्त कर सकते हैं? फिर कोई कलाकार नहीं है। –

संबंधित मुद्दे