Tengo una clase padre que tiene un constructor sobrecargado, y tengo una subclase que tiene un constructor con parámetros opcionales. ¿Hay alguna manera de que los constructores de la subclase sigan exponiendo el carácter sobrecargado de la clase padre mientras se conservan sus propios parámetros opcionales?En C# 4, ¿cómo puedo tener constructores con parámetros opcionales en una subclase de un padre con un constructor sobrecargado?
Aquí hay un código de ejemplo de las dos clases y sus constructores necesarios:
class Foo {
Foo(String arg0)
{
// do some stuff with arg0
}
Foo(String arg0, List<x> arg1)
: this(arg0)
{
// do some other stuff with arg1 that is special because we have an arg1
}
}
class Bar : Foo {
Bar(String arg0, List<y> arg2 = null, String arg3 = "")
: base(arg0)
{
// some third thing with arg2 and arg3
}
}
Esta es la firma del método para el otro constructor de la subclase me gustaría tener también para exponer la sobrecarga del constructor de los padres, pero la pregunta es cómo hacerlo:
Bar(String arg0, List<x> arg1, List<y> arg2 = null, String arg3 = "")
tengo, creo, se encontró una solución, pero no estoy seguro de que es tan limpio como podría ser. Lo publiqué como una respuesta en caso de que sea la única opción.
¿Se puede cambiar la firma del 'foo' tener sólo un constructor' Foo (String arg0, Lista arg1 = null) '? ¿O necesita distinguir entre pasar nulo y no pasar un valor en absoluto? –
Davy8
@ Davy8 - Necesito distinguir entre pasar nulo vs. no pasar nada como ese parámetro. Actualizaré el ejemplo para reflejar esto. Desafortunadamente, es mucho más complicado que este ejemplo, pero lo que tengo aquí es el quid de la cuestión. – cdeszaq
Personalmente, intentaré revisar el diseño para ver si sería posible cambiarlo para que no tenga ese requisito, pero es difícil decir si eso es posible sin saber más sobre lo que se supone que debe hacer. – Davy8