¿Cómo tomo el Type
de la clase heredada y lo paso al constructor base de la clase también heredado? Vea el ejemplo de código siguiente:Pasar el tipo de objeto actual a la llamada del constructor base
// VeryBaseClass is in an external assembly
public abstract class VeryBaseClass
{
public VeryBaseClass(string className, MyObject myObject)
{
}
}
// BaseClass and InheritedClass are in my assembly
public abstract class BaseClass : VeryBaseClass
{
public BaseClass(MyObject myObject) :
base(this.GetType().Name, myObject) // can't reference "this" (Type expected)
{
}
}
public class InheritedClass : BaseClass
{
public InheritedClass(MyObject myObject)
{
}
}
La línea base(typeof(this).Name, myObject)
no funciona porque no puedo hacer referencia a this
sin embargo, ya que el objeto no ha terminado de construir y por lo tanto no existe.
¿Es posible tomar el Type
del objeto que está construyendo actualmente?
EDIT:
Corregido la muestra como orsogufo suggested, pero aún así no funciona, como this
no está definido.
EDIT 2:
Solo para aclarar, quiero terminar con "InheritedClass"
que se pasa en el VeryBaseClass(string className, MyObject myObject)
constructor.
¿Por qué desea hacer esto?Un constructor no debería importar si se lo llama para crear una instancia de su propia clase o una clase derivada. – AakashM
Creo que estás perdiendo el punto. El ensamblaje externo que define la clase base de un marco que uso requirió que la representación de cadena de la clase de sí mismo se pasara al constructor. Hasta el momento lo he estado poniendo como es de esperar (como una cadena) pero preferiría si fuera a funcionar en tiempo de ejecución por el bien de la salud mental. – Codesleuth
Oh, ya veo, no es tu clase. Sigo pensando que es malo que le importe :) – AakashM