我正在使用此代码获取ADGroup,
using (var context = Utilities.GetPrincipalContext(OU))
using (var gpe = new GroupPrincipalExtension(context, "*"))
using (var ps = new PrincipalSearcher(gpe))
{
foreach (var g in ps.FindAll())
{
Console.WriteLine(g.DisplayName);
}
}
它给DisplayName null,因为该属性可用但在另一个对象下,这是我在调试时在LOCAL窗口中看到的,
修改
我认为代码是自我解释但如果它引起混淆,我试图获取特定OU中的所有组,然后尝试获取自定义属性“DisplayName”,GroupPrincipalExtension继承自System.directoryservices.accountmanagement的GroupPrincipal类。
调试时我可以看到“g”对象有Test.AD.GroupPrincipalExtension(我不知道该怎么称它?下划线对象?属性?不确定...),它有DisplayName属性。
因为我无法获得g.DisplayName
,我怎能得到关注,
g.Test.AD.GroupPrincipalExtension.DisplayName
答案 0 :(得分:1)
没有路径g.Test.AD.GroupPrincipalExtension.DisplayName
。 Visual Studio只显示g
类型为Test.AD.GroupPrincipalExtension
(因为g
类型为Principal
)。
由于您使用gpe
作为PrincipalSearcher
的过滤器,因此您看到的类型为GroupPrincipalExtension
。 (您的GroupPrincipalExtension
继承Principal
,PrincipalSearchResult<Principal>
列举的类型,就像您在foreach
中一样。
你必须在其他地方找到问题,也许在GroupPrincipalExtension
。拨打Principal.DisplayName
是可以的。