c# - Many to Many relationship in object design -


i have similar problem :

many many object object relation in c#

however, imagine championship have "last date played" property (just example) map participant. in case, property end up? must create intermediate class? (which wouldn't want do) option have? thanks!

one way have array on each object containing pointers other objects either via dictionary stores object key , date value (or custom property class number of properties) or using wrapper class around object , plain list, wrapper should implement decorator pattern allow direct access object unique properties.

the wrapper object use internal object properties shared between oposing wrapper objects 2 different objects property in sync.

another way separate list of pairs 1 wrapped above.

the later makes easy loop on objects.

here code example, might not need might give basics of idea.

void main() {     var p = new player("david");     var c = new championship("chess");     p.linkchampionship(c, datetime.now);      p.dump(); }  // define other methods , classes here  class player : properties {     public virtual string name {get; set;}     public list<championshipwrapper> champs = new list<championshipwrapper>();      public player() {     }     public player(string name) {         name = name;     }     public void linkchampionship(championship champ, datetime when) {         var p = new properties(when);         champs.add(new championshipwrapper(champ, p));         champ.players.add(new playerwrapper(this, p));     } }  class championship : properties {     public virtual string name { get; set; }     public list<playerwrapper> players = new list<playerwrapper>();      public championship(){}     public championship(string name) {         name = name;     }      public void linkplayer(player play, datetime when) {         var p = new properties(when);         players.add(new playerwrapper(play, p));         play.champs.add(new championshipwrapper(this, p));     } }  class properties {     public virtual datetime lastplayed { get; set; }     public properties() {     }     public properties(datetime when) {         lastplayed = when;     } }  class playerwrapper : player {     private player player;     private properties props;      public playerwrapper(player play, properties prop) {         this.player = play;         this.props = prop;     }      public override string name {         { return this.player.name; }         set { this.player.name = value; }     }      public override datetime lastplayed {          { return this.props.lastplayed; }         set { this.props.lastplayed = value; }     } }  class championshipwrapper : championship {     private championship champ;     private properties props;      public championshipwrapper(championship c, properties prop) {         this.champ = c;         this.props = prop;     }      public override string name {         { return this.champ.name; }         set { this.champ.name = value; }     }      public override datetime lastplayed {          { return this.props.lastplayed; }         set { this.props.lastplayed = value; }     }    } 

Comments

Popular posts from this blog

python - Scipy curvefit RuntimeError:Optimal parameters not found: Number of calls to function has reached maxfev = 1000 -

c# - How to add a new treeview at the selected node? -

java - netbeans "Please wait - classpath scanning in progress..." -