如何实现双向类?

Att*_*lah 1 .net c# oop

我有两个班:单元和用户.

Unit类具有User作为leader,而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);
   }
}
Run Code Online (Sandbox Code Playgroud)

我如何强制执行它,以便使用这些类的开发人员不会错误地调用如下代码:

User _user=new User();
Unit _unit=new Unit();
_user.LeadUnit(_unit);
_unit.SetLeader(_user);
Run Code Online (Sandbox Code Playgroud)

但人们以这种方式使用这些类:

_user.LeadUnit(_UNIT)

Rex*_*x M 5

这取决于您如何部署此代码,但您可以创建SetLeader内部而不是公共代码,因此程序集外部的任何代码都无法调用它.