Obtenir l'instance qui a appelé la méthode en C #
Je suis à la recherche d'un algorithme qui peut obtenir l'objet qui a appelé la méthode, à l'intérieur de cette méthode.
Par exemple:
public class Class1 {
public void Method () {
//the question
object a = ...;//the object that called the method (in this case object1)
//other instructions
}
}
public class Class2 {
public Class2 () {
Class1 myClass1 = new Class1();
myClass1.Method();
}
public static void Main () {
Class2 object1 = new Class2();
//...
}
}
Est-il possible de faire cela?
source d'informationauteur Willem Van Onsem
Vous devez vous connecter pour publier un commentaire.
Évidemment, je ne connais pas les détails exacts de votre situation, mais cela semble vraiment comme vous avez besoin de repenser votre structure un peu.
Ce pourrait facilement être fait si l'héritage est structuré.
Envisager de chercher dans une classe abstraite, et les classes qui héritent de cette classe abstraite. Vous pourriez même être en mesure de réaliser la même chose avec les interfaces.
Voici un exemple de comment faire cela...
Cette annonce, car il m'a fallu un certain temps pour trouver ce que je cherchais moi-même. Je l'utilise dans certains statique enregistreur de méthodes...
Vous pourriez obtenir à l'état courant de la pile dans le code et de marcher d'un pas.
http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.aspx
Mais comme l'a commenté ci-dessous, cela vous permettra d'obtenir une méthode de classe et de vous appeler, mais pas l'instance (si il y en a un, pourrait être statique, bien sûr).
Il serait très mauvais style depuis
) briser l'encapsulation
b) il est impossible de connaître le type de l'objet d'appel au moment de la compilation alors ce que vous faites avec l'objet plus tard, il ne sera probablement pas le travail.
c) il serait plus facile/mieux si vous venais de passer de l'objet au constructeur ou à la méthode, comme:
ou tout simplement passer l'objet en tant que paramètre de méthode.
et appeler la Méthode:
cordialement, Florian