Override groupprincipal.members.add

本文关键字:add members groupprincipal Override | 更新日期: 2023-09-27 17:50:44

有人知道是否可以覆盖或扩展成员。在System.DirectoryServices.AccountManagement.GroupPrincipal对象上添加方法?

我想做这样的事情

public new void Add(Principal principal)
{
    base.Add(principal);
    LogFile.WriteLine("Added {0} to group", principal.Name);   
}

Override groupprincipal.members.add

这很棘手,因为您不是试图覆盖GroupPrincipal上的方法,而是覆盖GroupPrincipal内部的子对象,即代表成员的PrincipalCollection对象。

你想要做的唯一方法是把Add方法作为一个普通的方法放在子对象上,就像:

public class EnhancedGroupPrincipal : Group Principal {    
    public void Add(Principal principal) {
        //your code to add and log
    }    
}

虽然您必须知道如何使用备用Add方法,但您应该知道,因此它将是OK的。

我能想到的最简单的方法是使用扩展方法

public static void Add(this GroupPrincipal group, Principal child)
{
     group.Members.Add(child);
     LogFile.WriteLine("Added {0} to group", child.Name);
     //Do whatever else you have to do...
}