Je fais un usage intensif de la réflexion dans mon projet actuel pour simplifier grandement la communication entre mes contrôleurs et les services wcf. Ce que je veux faire maintenant est d'obtenir une valeur de la Session dans un objet qui n'a pas d'accès direct à HttpSessionStateBase (IE: Pas un contrôleur). Par exemple, un ViewModel. Je pourrais le transmettre ou y faire référence, mais ce n'est pas optimal dans ma situation.C# Réflexion StackTrace get value
Puisque tout vient d'un contrôleur à un moment donné dans mon scénario, je peux faire ce qui suit pour marcher le sac au contrôleur où provient l'appel, des choses assez simple:
var trace = new System.Diagnostics.StackTrace(); foreach (var frame in trace.GetFrames()) { var type = frame.GetMethod().DeclaringType; var prop = type.GetProperty("Session"); if(prop != null) { // not sure about this part... var value = prop.GetValue(type, null); break; } }
Le problème est ici que je Je n'arrive pas à trouver comment obtenir "l'instance" du contrôleur ou de la propriété Session pour que je puisse en lire.
Méfiez-vous de travailler comme ça: le compilateur JIT pourrait intégrer des fonctions/propriétés de sorte que vous ne les verriez pas correctement dans les versions de version. – Stormenet