Digamos que tenemos estas dos clases:De la clase base en C#, ¿obtener tipo derivado?
public class Derived : Base
{
public Derived(string s)
: base(s)
{ }
}
public class Base
{
protected Base(string s)
{
}
}
¿Cómo puedo averiguar desde dentro del constructor del Base
Derived
que es el invocador? Esto es lo que ocurrió:
public class Derived : Base
{
public Derived(string s)
: base(typeof(Derived), s)
{ }
}
public class Base
{
protected Base(Type type, string s)
{
}
}
¿Hay otra manera que no requiere pasar typeof(Derived)
, por ejemplo, una cierta manera de utilizar la reflexión desde dentro del constructor Base
's?
Está ocultando un hecho interesante en muchos códigos. – VVS
Un mejor ejemplo sería mostrar la salida de 'Derived1 d1 = new Base();' – Seph
'Derived1 d1 = new Base();' genera un error en tiempo de compilación, probablemente quiera decir al revés. FYI '((Base) new Derived1()). GetType(). Name' es" Derived1 " –