如何访问基类的部分成员

时间:2017-01-22 13:19:19

标签: c#

我有一个基类

class Administrator()
    {
         void addEmployee(){ some code };
         void Salary_PaySlip() { some code }; 
    }
class HR: Administrator
    {
            // make use of addEmployee()
    }
class Accountant: Administrator
    {
            // make use of void Salary_PaySlip()
    }

这只是一个例子。

我希望Accountant仅使用方法Salary_PaySlip()addEmployee()无法访问Accountant方法。同样的方式class HR应该只能访问addEmployee()方法。

有人可以帮我解决这个问题吗?

先谢谢

1 个答案:

答案 0 :(得分:3)

您的问题可以归结为单一责任原则,它与接口隔离原则密切相关(我建议您检查面向对象设计的SOLID原则:https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)

您创建了一个可以同时添加员工和PaySlip的班级管理员。但是,您想要分离谁有权使用您班级的某些部分。这是该类应分为两个不同类的标志。每种方法一个。

然后,您就可以创建"客户端"类(使用方法的人)。我建议您最后使用合成而不是继承来访问管理员部分,因为它不确定是否有这种继承链接。

示例代码当然不相关(但如果没有更多信息可以做得更好)

public class EmployeeAdministrator()
{
    public void addEmployee(){ some code };
}

public class SalaryAdministrator()
{
    public void Salary_PaySlip() { some code };
}

public class HR 
{
    public EmployeeAdministrator Administrator { get; }
    // make use of addEmployee()
}

class Accountant
{
    public SalaryAdministrator Administrator { get; }
    // make use of void Salary_PaySlip()
}