Witam,
Aktualnie jestem w trakcie pisania pewnej biblioteki i chcę tam zaimplementować LazyLoading / wzorca Proxy.
Ogólnie zastanawiam się, czy możliwe jest dynamiczne tworzenie klas, bądź możliwe, że jest lepszy sposób na rozwiązanie tego problemu. Aby objaśnić co chcę mniej-więcej osiągnąć przedstawię trochę kodu. Sposób musi być uniwersalny.
Użytkownik ma jakąś klasę i metodę, która udostępnia jego klasę.
public class Czlowiek
{
public virtual string Imie { get; set; }
public virtual string Nazwisko { get; set; }
public virtual int Wiek { get; set; }
}
public Czlowiek PobierzCzlowiek();
W tym momencie chcę aby metoda PobierzCzlowiek nie zwracała klasy Człowiek jako takiej, tylko klasę dziedziczącą po Człowiek (implementującą proxy)
public class CzlowiekReturn : Czlowiek
{
public void Execute()
{
base.Imie = "Jan";
base.Nazwisko = "Kowalski";
base.Wiek = 20;
}
public override string Imie
{
get
{
if (base.Imie == null)
Execute();
return base.Imie;
}
set
{
base.Imie = value;
}
}
public override string Nazwisko
{
get
{
if (base.Nazwisko == null)
Execute();
return base.Nazwisko;
}
set
{
base.Nazwisko = value;
}
}
public override int Wiek
{
get
{
if (base.Wiek == null)
Execute();
return base.Wiek;
}
set
{
base.Wiek = value;
}
}
}
Oczywiście metody Execute być nie musi, mogę obiekt bazowy wypełnij inaczej. Zastanawiam się, czy tworzenie takich klas "nazwaReturn" może odbywać się dynamicznie za pomocą refleksji ?