2010-10-04 62 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內部標記爲可實現此目的。