Disons que nous avons ces deux classes:A partir de la classe de base en C#, obtenez le type dérivé?
public class Derived : Base
{
public Derived(string s)
: base(s)
{ }
}
public class Base
{
protected Base(string s)
{
}
}
Comment puis-je savoir à partir du constructeur de Base
que Derived
est l'invocateur? C'est ce que je suis venu avec:
public class Derived : Base
{
public Derived(string s)
: base(typeof(Derived), s)
{ }
}
public class Base
{
protected Base(Type type, string s)
{
}
}
Y at-il une autre façon qui ne nécessite pas passer typeof(Derived)
, par exemple, d'une certaine façon d'utiliser la réflexion du constructeur au sein de Base
?
Vous cachez le fait intéressant dans beaucoup de code. – VVS
Un meilleur exemple serait d'afficher la sortie de 'Derived1 d1 = new Base();' – Seph
'Derived1 d1 = new Base();' génère une erreur de compilation, vous voulez probablement dire l'inverse. FYI '((Base) new Derived1()). GetType(). Name' est" Derived1 " –