.Net 3.5, en utilisant C#Comment obtenir une référence à une instance d'une classe dérivée à partir d'une classe de base
J'ai une instance d'une classe (A) qui a été appelé par une méthode virtuelle à partir d'un classe dérivée (B). Dans la méthode (une méthode de classe A) j'ai découvert le type de classe B qui a fait l'appel, et en utilisant la réflexion j'ai examiné la classe B et découvert une propriété dont je veux accéder à la valeur.
Existe-t-il un moyen par réflexion pour obtenir la référence d'instance à la classe B? Le seul objet que j'ai est ma référence 'this'.
[Modifier]
A titre d'expliquer que je ne suis pas complètement fou pour avoir besoin de faire ceci: Ma classe est T4NmpBase (classe A). Je n'ai aucun contrôle sur la classe dans laquelle j'hérite (TextTransformation) ou la classe qui hérite de moi (TextTemplating - class B). Je voudrais utiliser la propriété "Host" si elle se termine mais ne veut pas mettre n'importe quel fardeau sur le programmeur qui écrit le code de modèle de texte qui génère la classe TextTransformation.
//
// this is my class
//
public abstract partial class T4NmpBase : Microsoft.VisualStudio.TextTemplating.TextTransformation {
public override void Initialize()
{
//
// determine derived class info and get value of "Host" property if it exists
//
}
}
//
// this class is generated by T4 in a project that I have no control over
//
[System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "10.0.0.0")]
public partial class PPTest : T4_NMP_Base.T4NmpBase {
public virtual global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost Host { ... }
public override void Initialize()
{
base.Initialize();
}
}
Il est possible avec la réflexion, mais il ressemble vraiment à un problème avec votre conception. N'oublie pas que la réflexion est très lente. Pourtant, vous pourriez avoir une bonne raison pour cela, je suppose. Tu n'as pas dit. –