如何覆盖系统类的单个函数?

时间:2014-03-17 17:35:43

标签: c# asp.net

我试图在ToString()内覆盖GroupPrincipal类的System.DirectoryServices.AccountManagement函数,而不必创建子类。我觉得我以前做过非常相似的事情,但似乎无法记住。

我试过这个作为测试,但似乎覆盖整个班级

public class GroupPrincipal
{
    public override string ToString()
    {
        return base.ToString();
    }
}

由于

2 个答案:

答案 0 :(得分:1)

如果我理解正确你想要改变现有类的方法而不继承它。这是不可能的(至少没有反思)。

创建子类是执行此操作的正确方法。

答案 1 :(得分:-2)

此处您尚未指定班级的基础。因此,它仅来自默认值object

尝试:

public class GroupPrincipal : AccountManagement
{
    // Method overrides here...
}

当然,从某种意义上说,它会覆盖整个班级。"但是由于OOP的奇迹,子类继承了它的行为,直到你自己开始覆盖成员。这样做的开销很小。

如果AccountManagement类具有非默认构造函数,则可能还需要向类中添加相应的构造函数。这些可能会传递给基类型中的对应物。例如,您可能有:

public GroupPrincipal(string name)
    : base(name)
{
}
相关问题