It seems that you need to implement Observer design pattern :
http://www.dofactory.com/Patterns/PatternObserver.aspx[
^]
So you can implement it in this way :
public class PlayersObserver
{
public List<player> Players =new List<player>();
private int _points;
public int Points
{
get { return _points; }
set
{
_points = value;
foreach (var player in Players)
{
player.Points = value;
}
}
}
}
public class Player
{
public Player()
{
}
public Player Partner { get; set; }
public int Points { get; set; }
}
</player></player>
And it usage is :
Player p1 = new Player();
Player p2 = new Player();
PlayersObserver playersObserver = new PlayersObserver();
playersObserver.Players.Add(p1);
playersObserver.Players.Add(p2);
playersObserver.Points = 10;
int p = p2.Points;
p will have the value of 10 at this point.
By this way you will do whatever you want with observer and it will apply that to those objects in its List so you are not confined only to two partners.
Hope it helps.