4 votes

DebuggerDisplayAttribute - Comment choisit-il la langue lors de l'évaluation des expressions ?

http://msdn.microsoft.com/en-us/library/x810d419.aspx

D'après ce que nous pouvons voir sur MSDN, il est dit de faire attention aux expressions que nous mettons car elles changent d'une langue à l'autre. Ma question est la suivante : quelles sont les langues prises en charge pour écrire ces expressions ? Si plusieurs langues peuvent le faire, comment détecte-t-on la langue utilisée ?

J'ai fait ma classe en CLI, et codé l'expression en c#, étant donné que cela fonctionne. J'ai essayé en c++/CLI, mais de cette façon ça ne marche pas.

Voici mon code :

[DebuggerDisplay("z = {ToString()} Norm = {System.Math.Round(Norm,2)} Angle = {System.Math.Round(Angle, 2)}")]

Maintenant, j'essaie la méthode c++/CLI :

[DebuggerDisplay("z = {ToString()} Norm = {System::Math::Round(Norm,2)} Angle = {System::Math::Round(Angle, 2)}")]

Je suppose qu'il lira toujours l'expression comme du code C#. Est-ce bien le cas ?

4voto

astander Points 83138

J'ai trouvé ceci lien

Il y a un revers de la médaille à ce pouvoir cependant - parce que l'évaluation de la chaîne de format DebuggerDis DisplayAttribute est spécifique au compilateur, le premier exemple fonctionnera très bien avec la plupart des débogueurs tels que VB, mais le deuxième ne sera pas évalué en raison de son utilisation de l'opérateur ternaire spécifique au C#. En fonction du débogueur, cela signifie débogueur, celui-ci affichera soit la valeur par du nom de la classe, soit une erreur indiquant quelle partie de la syntaxe n'a pas pu être évaluée ; ceci peut être important si vous travaillez dans un environnement multi-langue, ou si vous vous envoyez vos classes en tant que bibliothèque à clients.

3voto

Marc Gravell Points 482669

Mon interprétation est qu'il va toujours l'interpréter dans un format qui se produit pour ressembler beaucoup à C#, oui. Donc . pour l'accès aux membres, etc. (de la même manière que la liaison de données utilise la fonction . pour l'accès aux membres, quelle que soit la langue de l'appelant). Il ressemble aussi beaucoup à la méthode string.Format si vous voyez la relation ( "{0} - {1}" etc).

Bien sûr, si l'expression devient trop complexe, vous pourriez envisager un proxy de type débogueur .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X