扩展GroupPrincipal和Members属性

时间:2010-04-19 15:47:19

标签: c# active-directory directoryservices account-management

我想扩展GroupPrincipal类来处理一些自定义属性:

using System.DirectoryServices.AccountManagement;

[DirectoryRdnPrefix("CN")]
[DirectoryObjectClass("group")]
public class MyGroupPrincipal : GroupPrincipal {
    // ...
}

如何覆盖Members的{​​{1}}属性,以便如果它有一个组成员,则返回MyGroupPrincipal而不是MyGroupPrincipal的实例?我想写一下。

GroupPrincipal

1 个答案:

答案 0 :(得分:1)

无法直接覆盖GroupPrincipal的Members属性。相反,你可以滚动你自己的方法(抱歉没有干净的切割代码,但我在我的代码中使用了下面描述的部分解决方案)。

我发现很多次使用AccountManagement库,您只需要使用基DirectoryEntry来正确完成工作。您可以使用group.GetUnderlyingObject()访问基础对象,然后通过迭代deGroup.Properties("member")来读取成员资格。读取每个成员类型(不记得属性名称,可能是'member.SchemaClassName'?)和distinguishedName(member.Properties("distinguishedName")(0).ToString())然后根据您使用专有名称{{1创建每个主体的类型创建一个switch语句对用户等做同样的事情......