Estou com o seguinte cenário. Eu tenho uma classe Fundo e uma classe MovimentoFundo. Ao meu ver o MovimentoFundo é agregação de Fundo.
Algo tipo assim
public class MovimentoFundo
{
}
public class Fundo
{
public List<MovimentoFundo> movimentos;
}
Mas ao mesmo tempo, em outros lugares do sistema eu preciso tratar esse movimento de maneira singular, onde eu precisaria do objeto MovimentoFundo com um atributo para dizer qual é o fundo dele, e o MovimentoFundo ficaria assim:
public class MovimentoFundo
{
public Fundo fundo;
}
Se formos ver, todos relacionamentos são bidirecionais. Vamos pegar o exemplo do Carro e do Motor. O Carro tem um Motor e um Motor pertence a um carro. O que acontece é que na maioria das vezes implementamos apenas um dos dois lados do relacionamento.
Nesse exemplo dificilmente iriamos querer saber qual carro pertence um determinado motor partindo da instância do motor. Geralmente acessamos o motor através da instância de um carro então não faria muito sentido manter as duas vias da relação. Outro ponto que faz com que utilizemos menos relacionamentos bidirecionais é o fato de que pode ficar complicado (e pesado) manter o tempo todo essas referências cruzadas.
No entanto, há situações como a sua em que é necessário e isso é, do meu ponto de vista, completamente normal.