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();
}
}
El problema que tengo es agregarlos a una colección genérica. Sé que es posible, pero ¿cómo puedo almacenar varios tipos en una colección etcDiferentes genéricos T en la misma colección
IList<Column<?>> columns = new List<Column<?>()
Realmente agradecería cualquier consejo sobre la consecución de este objetivo. El objetivo es tener diferentes tipos de columna almacenados en la misma lista. Vale la pena mencionar que estoy usando NHibernate y el discriminador para cargar el objeto apropiado. Inicialmente, el valor debe tener el tipo de la clase.
Muchas gracias por su ayuda con anticipación.
Me gustaría saber el punto de esto. Los genéricos ayudan con la seguridad del tipo. De todos modos, si realmente quisiera hacer esto, ¿no podría completar su lista con la Columna
No, eso no funcionó. He intentado utilizar una Columna
Hay [algunos] (http://stackoverflow.com/q/3215402/590790) [duplicados] (http://stackoverflow.com/q/3777057/590790) de esta pregunta. Además de la solución 'base-type' [publicada aquí por JaredPar] (http://stackoverflow.com/a/10606974/590790), me gustaría proponer [seguir el patrón del adaptador para crear un contenedor no genérico para este propósito] (http://stackoverflow.com/a/34417767/590790), por lo que el Principio de Sustitución de Liskov no está roto. –