Witam. Chciałem rozwiązać pewien problem w projekcie zgodnie z zasadami programowanie obiektowego. Mianowicie uzupełniam pola w klasie poprzez wysyłanie żądań do pewnego API. Nie zawsze wszystkie pola w objekcie muszą posiadać wartość. By nie wysyłać zbędnych żądań do API wykonuję tylko te potrzebne objektowi. Poniżej zamieściłem uproszczony kod odzwierciedlający mój oryginalny kod. Proszę o napisanie czy dobrze rozwiązałem ten problem używając delegacji i czy można to zrobić lepiej.
public class Person
{
string name;
string sex;
int age;
string address;
public delegate void UpdateDelegate();
public UpdateDelegate UpdateFirstOption;
public UpdateDelegate UpdateSecondOption;
void UpdateName()
{
name = Connection.ConnectForName();
}
void UpdateAge()
{
age = Connection.ConnectForAge();
}
void UpdateAddress()
{
address = Connection.ConnectForAddress();
}
public Person(string name)
{
UpdateFirstOption = UpdateSex;
UpdateFirstOption += UpdateAge;
UpdateSecondOption = UpdateSex;
UpdateSecondOption += UpdateAddress;
}
}
static void Main(string[] args)
{
foreach(var item in someListOfPersons)
item.UpdateFirstOption();
foreach(var item in anotherListOfPersons)
item.UpdateSecondOption();
}