如何获得下划线对象?

时间:2015-09-22 07:06:00

标签: c# active-directory

我正在使用此代码获取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窗口中看到的,

enter image description here

修改

我认为代码是自我解释但如果它引起混淆,我试图获取特定OU中的所有组,然后尝试获取自定义属性“DisplayName”,GroupPrincipalExtension继承自System.directoryservices.accountmanagement的GroupPrincipal类。

调试时我可以看到“g”对象有Test.AD.GroupPrincipalExtension(我不知道该怎么称它?下划线对象?属性?不确定...),它有DisplayName属性。

因为我无法获得g.DisplayName,我怎能得到关注,

g.Test.AD.GroupPrincipalExtension.DisplayName

1 个答案:

答案 0 :(得分:1)

没有路径g.Test.AD.GroupPrincipalExtension.DisplayName。 Visual Studio只显示g类型为Test.AD.GroupPrincipalExtension(因为g类型为Principal)。

由于您使用gpe作为PrincipalSearcher的过滤器,因此您看到的类型为GroupPrincipalExtension。 (您的GroupPrincipalExtension继承PrincipalPrincipalSearchResult<Principal>列举的类型,就像您在foreach中一样。

你必须在其他地方找到问题,也许在GroupPrincipalExtension。拨打Principal.DisplayName是可以的。