2011-11-10 9 views
6

निम्नलिखित कोड पर विचार करें:सिस्टम। निर्देशिका सेवा। खाता प्रबंधन। प्रिंसिपल कोलेक्शन - यह जांचने के लिए कि प्रिंसिपल उपयोगकर्ता या समूह है या नहीं?

GroupPrincipal gp = ... // gets a reference to a group 

foreach (var principal in gp.Members) 
{ 
     // How can I determine if principle is a user or a group?   
} 

मूल रूप से क्या मैं जानना चाहता हूँ (सदस्य संग्रह के आधार पर) है सदस्यों उपयोगकर्ताओं होते हैं और जो समूह हैं जो चाहते हैं। वे किस प्रकार के आधार पर हैं, मुझे अतिरिक्त तर्क को बंद करने की आवश्यकता है।

उत्तर

12

आसान:

foreach (var principal in gp.Members) 
{ 
     // How can I determine if principle is a user or a group?   
    UserPrincipal user = (principal as UserPrincipal); 

    if(user != null) // it's a user! 
    { 
    ...... 
    } 
    else 
    { 
     GroupPrincipal group = (principal as GroupPrincipal); 

     if(group != null) // it's a group 
     { 
      .... 
     } 
    } 
} 

असल में, तुम सिर्फ एक प्रकार आप as कीवर्ड उपयोग करने में रुचि के लिए डाली - कास्ट करना विफल रहा है, तो मूल्य null तो है - अन्यथा यह सफल रहा।

बेशक

, एक और विकल्प प्रकार मिलता है और यह निरीक्षण करने के लिए होगा:

foreach (var principal in gp.Members) 
{ 
    Type type = principal.GetType(); 

    if(type == typeof(UserPrincipal)) 
    { 
     ... 
    } 
    else if(type == typeof(GroupPrincipal)) 
    { 
    ..... 
    } 
} 
+0

बहुत अच्छा समाधान - धन्यवाद! –

+1

या 'is' ऑपरेटर का उपयोग करें (उदा। Var परिणाम = प्रिंसिपल उपयोगकर्ता प्रिंसिपल है) जो शायद इन विकल्पों में से किसी एक के समान आंतरिक रूप से कुछ कर रहा है –

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

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