我有两个课程:单元和用户。
一个Unit类有一个User作为领导者,一个User可以是许多单位的一部分。
class Unit
{
User Leader;
public void SetLeader(User leader)
{
this.Leader=leader;
}
}
class User
{
Unit UnitLed;
public void LeadUnit(Unit unit)
{
this.UnitLed=unit;
unit.SetLeader(this);
}
}
我如何强制执行它,以便使用这些类的开发人员不会错误地调用如下代码:
User _user=new User();
Unit _unit=new Unit();
_user.LeadUnit(_unit);
_unit.SetLeader(_user);
但人们以这种方式使用这些类:
_user.LeadUnit(_UNIT)
答案 0 :(得分:5)
这取决于您部署此代码的方式,但您可以将SetLeader
设为内部而非公开,因此程序集之外的任何代码都无法调用它。
答案 1 :(得分:2)
更改您的LeadUnit方法......
class User
{
Unit UnitLed;
public void LeadUnit(Unit unit)
{
if ( this.UnitLed != unit)
{
this.UnitLed=unit;
unit.SetLeader(this);
}
}
}
您也可以在SetLeader方法中强制执行类似的条件。
答案 2 :(得分:1)
不幸的是.Net无法轻易做到这一点。
但是,您可以通过将类放在第二个项目中,链接到主解决方案,并将SetLeader标记为内部来实现它。