public abstract Column<T>
{
private T Value {get;set;}
public abstract string Format();
}
public class DateColumn : Column<DateTime>
{
public override string Format()
{
return Value.ToString("dd-MMM-yyyy");
}
}
public class NumberColumn : Column<decimal>
{
public override string Format()
{
return Value.ToString();
}
}
Problemem, który mam, jest dodanie ich do ogólnej kolekcji. Wiem, że to możliwe, ale jak mogę przechowywać wiele typów w kolekcji itp.Różne generyczne T w tej samej kolekcji
IList<Column<?>> columns = new List<Column<?>()
Byłbym wdzięczny za wszelkie porady dotyczące osiągnięcia tego celu. Celem jest posiadanie różnych typów kolumn przechowywanych na tej samej liście. Warto wspomnieć, że używam NHibernate i discriminator do załadowania odpowiedniego obiektu. W końcu wartość musi mieć typ klasy.
Dziękujemy za pomoc z góry.
Jestem mylić o tym punkcie. Generics pomaga w bezpieczeństwie typu. Niezależnie od tego, jeśli naprawdę chciałeś to zrobić, czy nie mógłbyś wypełnić swojej listy Kolumną
Nie, to by nie działało, próbowałem używać kolumny
Istnieje już tylko kilka (http://stackoverflow.com/q/3215402/590790) [duplikatów] (http://stackoverflow.com/q/3777057/590790) tego pytania. Oprócz "podstawowego typu" rozwiązania [opublikowanego tutaj przez JaredPar] (http://stackoverflow.com/a/10606974/590790), chciałbym zaproponować [podążanie za wzorcem adaptera, aby stworzyć nietypowe opakowanie do ten cel] (http://stackoverflow.com/a/34417767/590790), tak aby zasada zastępowania Liskov nie została złamana. –