Wenn Sie einen objektorientierten (oder bereichsorientierten) Ansatz suchen, dann ist ein drittes Objekt, das die "Verbindung" handhabt, der völlig falsche Weg, dies zu tun. Sie können ILists / Enumerables mit Add... Methoden verwenden, um dies wie folgt zu behandeln:
public class Participant
{
private readonly IList<Championship> _championships = new List<Championship>();
public IEnumerable<Championship> Championships
{
get { return _championships; }
}
internal void AddChampionship(Championship championship)
{
if (!_championships.Contains(championship))
_championships.Add(championship);
}
}
public class Championship
{
private readonly IList<Participant> _participants = new List<Participant>();
public IEnumerable<Participant> Participants
{
get { return _participants; }
}
public void AddParticipant(Participant participant)
{
if (_participants.Contains(participant)) return;
_participants.Add(participant);
participant.AddChampionship(this);
}
}
Wichtig ist hier, dass die Beziehung nur von einer Seite aus verwaltet wird, z. B. in diesem Fall durch den Aufruf von championship.AddParticipant()