Question

Lors du débogage d'une application ASP.NET, je veux obtenir une copie sur papier de l'ensemble de l'état d'un objet très important. Je veux toutes les propriétés et les valeurs de cet objet et la même pour chaque-propriété d'objet, récursive.

Parce que l'extrémité avant du temps d'application après un retard important, je ne peux pas ajouter une montre ou utilisez la fenêtre immédiate ou vol stationnaire au-dessus de l'objet, car il n'y aura pas de temps adequite d'examiner pleinement l'objet.

Y at-il un moyen d'obtenir une impression complète d'un objet en mode débogage, ou dire, un utilitaire ou une fonction C # qui ferait cela?

Était-ce utile?

La solution

Vous pouvez utiliser la réflexion pour obtenir la liste des propriétés et des champs sur le type de classe, puis utilisez que pour obtenir les valeurs d'exécution de chacune de ces propriétés / valeurs et les cracher à la console.

Le type de PropertyInfo ( ici ) et le type de FieldInfo ( ici ) sont ce que vous avez besoin pour obtenir de l'objet Type pour votre propre instance de classe.

MyObject myObject = ... //setup my object
Type myType = myObject.GetType(); //or Type.GetType(myObject); //I think

PropertyInfo[] properties = myType.GetProperties();
FieldInfo[] fields = myType.GetFields();

properties[0].GetValue(myObject); //returns the value as an Object, so you may need to cast it afterwards.

Autres conseils

La réflexion est vraiment votre meilleur pari ici. Vous pouvez commencer avec votre objet racine, obtenir toutes ses propriétés et leurs valeurs, et le cas échéant obtenir les propriétés et les valeurs hors de ces valeurs récursive. C'est une technique très puissante, et si vous ne le savez pas encore, vous devriez probablement apprendre de toute façon, ce qui rend un projet parfait pour apprendre avec. :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top