Diciamo che abbiamo queste due classi:Dalla classe base in C#, ottenere il tipo derivato?
public class Derived : Base
{
public Derived(string s)
: base(s)
{ }
}
public class Base
{
protected Base(string s)
{
}
}
Come posso scoprire dall'interno del costruttore Base
che Derived
è l'invoca? Questo è ciò che mi si avvicinò con:
public class Derived : Base
{
public Derived(string s)
: base(typeof(Derived), s)
{ }
}
public class Base
{
protected Base(Type type, string s)
{
}
}
C'è un altro modo che non richiede passando typeof(Derived)
, per esempio, un modo di usare riflessione dall'interno costruttore Base
s'?
Stai nascondendo l'unico fatto interessante in un sacco di codice. – VVS
Un esempio migliore sarebbe quello di mostrare l'output di 'Derived1 d1 = new Base();' – Seph
'Derived1 d1 = new Base();' genera un errore in fase di compilazione, probabilmente si intende il contrario. FYI '((Base) new Derived1()). GetType(). Name' è" Derived1 " –