我想扩展GroupPrincipal
类来处理一些自定义属性:
using System.DirectoryServices.AccountManagement;
[DirectoryRdnPrefix("CN")]
[DirectoryObjectClass("group")]
public class MyGroupPrincipal : GroupPrincipal {
// ...
}
如何覆盖Members
的{{1}}属性,以便如果它有一个组成员,则返回MyGroupPrincipal
而不是MyGroupPrincipal
的实例?我想写一下。
GroupPrincipal
答案 0 :(得分:1)
无法直接覆盖GroupPrincipal的Members属性。相反,你可以滚动你自己的方法(抱歉没有干净的切割代码,但我在我的代码中使用了下面描述的部分解决方案)。
我发现很多次使用AccountManagement库,您只需要使用基DirectoryEntry来正确完成工作。您可以使用group.GetUnderlyingObject()
访问基础对象,然后通过迭代deGroup.Properties("member")
来读取成员资格。读取每个成员类型(不记得属性名称,可能是'member.SchemaClassName'?)和distinguishedName(member.Properties("distinguishedName")(0).ToString()
)然后根据您使用专有名称{{1创建每个主体的类型创建一个switch语句对用户等做同样的事情......