Implementing relationship in C #

3

I have the following classes:

Thecodelookslikethis:

publicclassMae{publicstringNome{get;set;}publicList<Filho>Filhos{get;set;}}publicclassFilho{publicstringNome{get;set;}}

Inthiscase,itispossibletogetallthesonsofthemother,butitisnotpossibletoobtainthemotherofthechildren.

Ex:

varmae=newMae();mae.Nome="Maria";
mae.Filho = new List<Filho>();

var filho = new Filho();
filho.Nome = "Joãozinho"

mae.Filho.Add(filho);

filho.Mae // O objetivo é acessar a mãe...

How would it be possible to do this?

    
asked by anonymous 09.11.2015 / 15:01

2 answers

4

The only way is to have a reference for the mother:

public class Mae {
   public string Nome {get; set;}
   public List<Filho> Filhos {get; set;} = new List<Filho>(); //C# 6
}
public class Filho {
   public string Nome {get; set;}
   public Mae Mae {get; set;}
}

You can create some abstractions. You can create constructors or other ancillary methods that automate the process a bit. If every child has to have a mother, it can guarantee this in the constructor and may even already include the child in the mother.

public class Filho {
   public Filho(String nome, Mae mae) {
       Nome = nome;
       Mae = mae;
       mae.Filho.Add(this);
   }
   public string Nome {get; set;}
   public Mae Mae {get; set;}
}

var filho = new Filho("João", mae);

View about builders .

    
09.11.2015 / 15:06
1

Add a reference to Mae in child. If it is a dependency, put as a parameter in the child constructor.

Here's an example:

public class Mae
{
   public string Nome {get; set;}
   public List<Filho> Filhos {get; set;}
}

public class Filho
{
   public Filho(Mae mae)
   {
        this.Mae = mae;
   }

   public string Nome {get; set;}
   public Mae Mae {get; set;}
}
    
09.11.2015 / 15:07