我正在开发一个人力资源系统,其中有会计员工和程序员员工。加入公司的第一个月,员工不被赋予任何角色。一个员工可以同时是会计师和程序员。以下代码展示了设计。
现在,我需要通过实现新功能来增强系统:
终止所有会计师(终止意味着将员工状态设置为IsActive = false)。问题在于,我不能直接将所有会计师设置为非活动状态而不进行检查。我需要检查他是否拥有其他角色。
如何重建这些类以更自然地使用OO来执行终止函数?
更新
我正在寻找一个具有EF数据库优先解决方案模型和数据库架构的答案,以响应@AlexDev的回答。
C#代码
请提供需要翻译的具体内容。
现在,我需要通过实现新功能来增强系统:
终止所有会计师(终止意味着将员工状态设置为IsActive = false)。问题在于,我不能直接将所有会计师设置为非活动状态而不进行检查。我需要检查他是否拥有其他角色。
如何重建这些类以更自然地使用OO来执行终止函数?
更新
我正在寻找一个具有EF数据库优先解决方案模型和数据库架构的答案,以响应@AlexDev的回答。
C#代码
List<Accountant> allAccountants = Get All accountants from database
public class Employee
{
public int EmpID { get; set; }
public DateTime JoinedDate { get; set; }
public int Salary { get; set; }
public bool IsActive { get; set; }
}
public class Accountant : Employee
{
public Employee EmployeeData { get; set; }
}
public class Programmer : Employee
{
public Employee EmployeeData { get; set; }
}
@AlexDev的回答
请提供需要翻译的具体内容。
public class Employee
{
...
IList<Role> Roles;
bool isActive;
public void TerminateRole(Role role)
{
Roles.Remove(role);
if(Roles.Count == 0)
{
isActive = false;
}
}
}
public class Role
{
abstract string Name { get;}
}
public class ProgrammerRole : Role
{
override string Name { get { return "Programmer"; } }
}
参考资料