我只是好奇:
List<string> ADUsers = new List<string>();
using (PrincipalContext principle_context = new PrincipalContext(ContextType.Domain, "MYDOMAIN"))
using (UserPrincipal user_principal = new UserPrincipal(principle_context) { Enabled = true, Name = "*", EmailAddress = "*" })
using (PrincipalSearcher user_searcher = new PrincipalSearcher(user_principal))
using (PrincipalSearchResult<Principal> results = user_searcher.FindAll())
{
foreach (Principal p in results)
{
ADUsers.Add(p.Name + " " + ((UserPrincipal)p).EmailAddress);
}
}
...有没有办法避免将我的结果转换在这里?我想做类似的事情:
using (PrincipalSearchResult<UserPrincipal> results = user_searcher.FindAll())
...这样我的搜索结果将是我需要的类型,但 FindAll 方法似乎只允许使用
<Principal>
类型。有没有更好的办法?谢谢你。
最佳答案
实际上 foreach
会为你转换枚举值,所以你可以这样做
foreach (UserPrincipal p in results)
{
ADUsers.Add(p.Name + " " + p.EmailAddress);
}
假设
Name
在 UserPrincipal
和 Principal
中定义。关于c# - PrincipalSearchResult<T> 和 PrincipalSearcher FindAll,为什么 T 必须是 Principal 而不是 UserPrincipal,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26679819/