2010-10-04 100 views
1

我有两个类:单元和用户。如何实现双向类?

单元类具有用户作为领导者,并且用户可以是许多单元的一部分。

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); 
    } 
} 

Howw我可以强制执行它,以便使用这些类的开发者不会错误地调用代码,如:

User _user=new User(); 
Unit _unit=new Unit(); 
_user.LeadUnit(_unit); 
_unit.SetLeader(_user); 

但是,人们使用的类以这样的方式

_user .LeadUnit(_unit)

回答

5

这取决于您如何部署此代码,但您可以使SetLeader内部而不是公开,因此您的程序集外部的任何代码都无法 叫它。

2

更改LeadUnit方法,因为这...

class User 
{ 
    Unit UnitLed; 
    public void LeadUnit(Unit unit) 
    { 
     if (this.UnitLed != unit) 
     { 
      this.UnitLed=unit; 
      unit.SetLeader(this); 
     } 
    } 
} 

,您还可以在SetLeader方法执行类似的条件了。

1

不幸的是.Net没有办法轻松做到这一点。

但是,您可以通过将类放入与主解决方案链接的第二个项目并将SetLeader内部标记为可实现此目的。