C# System.DirectoryServices.AccountManagement.PrincipalCollection-如何检查主体是用户还是组?
考虑以下代码:C# System.DirectoryServices.AccountManagement.PrincipalCollection-如何检查主体是用户还是组?,c#,.net,active-directory,C#,.net,Active Directory,考虑以下代码: 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? } 基本上我想知道的是(基于members集合)哪些成员是用户,哪些是组。根据它们的类型,我需要触发额外的逻辑 简单: foreach (
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?
}
基本上我想知道的是(基于members集合)哪些成员是用户,哪些是组。根据它们的类型,我需要触发额外的逻辑 简单:
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))
{
.....
}
}
或者使用“is”操作符(例如,var result=principal is UserPrincipal),它可能在内部执行类似于这些选项之一的操作