Hej, programuję sobie od kilku miesięcy jakieś proste rzeczy w C# i przy projektowaniu jakichkolwiek aplikacji zawsze zastanawia mnie sytuacja taka jak poniżej. Jak najładniej i zgodnie z najlepszymi praktykami rozwiązywać takie problemy?
Załóżmy, że mamy jakąś tam klasę, np. Parent. Posiada ona listę obiektów klasy np. Child. Poza tym posiada ona jakieś inne pola, np. pole
listę SomeImportantList. I teraz powiedzmy, że któraś z metod klasy Child chciałaby korzystać z tej listy. Jedno z rozwiązań jakie mi się nasuwa to:
public class Parent
{
public List<Child> Children { get; set; }
public List<int> SomeImportantList { get; set; }
public Parent()
{
SomeImportantList = new List<int> {10, 6, 3, 8, 4};
Children = new List<Child>
{
new Child(SomeImportantList),
new Child(SomeImportantList),
new Child(SomeImportantList)
};
}
}
public class Child
{
private List<int> _someImportantList;
public Child(List<int> SomeImportantList)
{
_someImportantList = SomeImportantList;
}
private void someMethod()
{
// jakies tam operacje wymagajace odczytu SomeImportantList
}
}
Jednak czy jest sens wysyłać w konstruktorze do każdego nowego elementu tę samą listę? Czy można to rozwiązać jakoś lepiej i zgrabniej?