Buenas a todos:
Creía tener muy claro el tema de herencia y demás, pero parece que aún hay cosas que se me resisten.
Bueno, resulta que tengo dos clases para guardar datos, una derivada de la otra:
Y resulta que tengo otras dos clases, que también derivan una de la otra:Código:public class lote { int id {get; set;} } public class loteExt : lote { string {get; set;} }
Como podéis ver, lo que intento hacer es que la clase articExt contenga un objeto llamado "lista", pero que oculte la de su clase base, que encima, es de un tipo diferente. A pesar de ponerle new, que según la documentación, oculta el elemento base, me ha pasado que cuando he ido a consultar "lista" de mi elemento articExt, me ha saltado un nullPointerException. Usando el debugger, he podido ver que la clase articExt tiene DOS elementos lista, uno a null y otro con los datos, siendo este último el de la clase base.Código:public class artic { int id {get; set;} private List<lote> _lista; public List<lote> lista { get { return _lista; } set { _lista = value; } } public class articExt : artic { private new List<loteExt> _lista; public new List<loteExt> lista { get { return _lista; } set { _lista = value; } }
No entiendo cómo es posible que haya dos elementos con el mismo nombre (aunque sean de distinto tipo), ni cómo han ido a parar los lotes a la lista base (bueno, viene desde la WebApi, así que algún error de deserialización), y no sé cómo solucionarlo.
No me deja poner "lista" de "artic" como "virtual" porque no son del mismo tipo. Mi otra idea era eliminar "lista" y "_lista" de articExt, porque al fin y al cabo, puedo usar "lista" de la clase base "artic" gracias a la herencia de los lotes, pero no sé hasta qué punto me puede dar problemas. Para empezar, en el proyecto me ha dado como 17 errores por intentar inicializar la lista con:
Y no sé qué otros problemas puede acarrear en un proyecto tan grande como este.Código:miArtic.lista = new List<loteExt>()
¿Alguna indicación? ¿Algo que haya pasado por alto?
Gracias.
Marcadores