web-dev-qa-db-fra.com

Un générateur ToString () est-il disponible dans Visual Studio 2010?

Est-il possible de générer une ToString() à l'aide de Visual Studio 2010?

Je ne veux vraiment pas faire ça à la main!

[MODIFIER]

Je cherche une représentation en chaîne simple de mon modèle. Dans les IDE précédents *, la génération ToString a été activée dans l'interface utilisateur à l'aide de modèles simples et d'une sélection de champs.

Actuellement, les implémentations par défaut d'Equal et de Hashcode sont proposées dans un modèle similaire. J'avais espéré qu'il y avait quelque chose de similaire pour ToString.

Cela ne semble pas par défaut - merci pour les réponses!

(* ceci est mon premier projet .net)

31
laura

Vous pouvez créer votre propre extrait personnalisé pour chaque code standard et y accéder à partir d'IntelliSence.
Voici un bon tutoriel http://msdn.Microsoft.com/en-us/library/ms165392.aspx

Découvrez comment créer extraits avec des remplacements . Vous pouvez créer des structures assez génériques.

5
Mr. L

Resharper supporte ceci en générant des "membres de formatage"

https://www.jetbrains.com/resharper/webhelp/Code_Generation__Formatting_Members.html

Resharper -> Edit -> Generate Code -> Formatting Members

ou

alt + insert -> Formatting Members

J'ai confirmé que ceci est disponible dans Resharper 8.

19
tster

Vous pouvez utiliser le projet StatePrinter

class AClassWithToString
{
  string B = "hello";
  int[] C = {5,4,3,2,1};

  // Nice stuff ahead!
  static readonly StatePrinter printer = new StatePrinter();
  public override string ToString()
  {
    return printer.PrintObject(this);
  }
}
5
Carlo V. Dango

La douleur majeure que VS 2010 n'a même pas de méthode ToString à génération automatique, la syntaxe est assez proche de Java où j'ai utilisé Ecilpse pour générer le ToString, puis collé dans VS ... 

4
Patrick Hannon

Il n’existe pas sur le VS en configuration standard, mais sur le plugin ReSharper , si vous ne souhaitez pas le mettre en œuvre vous-même. Le plugin est commercial, mais je pense personnellement que cela en vaut la peine.

Avec ReSharper, ce serait alt + ins -> redéfinir les membres -> tostring tant que le nom de la classe est sur le curseur.

4
eis

Moe powinieneś spojrzeć na AutoCode 4. . Jest à rozszerzenie Visual Studio, le meilleur choix est de télécharger.

En savoir plus sur le mariage klasie napisać po prostu tostr i nacisnąćCtrl+Enteri automatycznie wygeneruje metodę ToString(), która łączy wszystkie właściwości publiczne klasy.

3
Oliver

Avec Reflection, vous pouvez réellement coder une méthode ToString ():

public override String ToString()
{
    Type objType = this.GetType();
    PropertyInfo[] propertyInfoList = objType.GetProperties();
    StringBuilder result = new StringBuilder();
    foreach (PropertyInfo propertyInfo in propertyInfoList)
         result.AppendFormat("{0}={1} ", propertyInfo.Name, propertyInfo.GetValue(this));

     return result.ToString();
}
3
J Roig

Si vous n'écrivez pas votre propre méthode ToString, Object vous en fournit une (bien que cela ne soit pas très utile car elle ne renvoie que l'espace de noms et le nom du type d'objet).

Sinon, vous devez le créer vous-même, car IDE ne peut pas savoir ce que vous voulez afficher en tant que méthode ToString d'un objet.

0
Øyvind Bråthen

Si vous avez besoin d’une meilleure représentation de votre objet lors du débogage vous pouvez utiliser le DebuggerDisplayAttribute :

[DebuggerDisplay("Count = {count}")]
class MyHashtable
{
    public int count = 4;
}

Cela peut être plus rapide que de remplacer ToString, mais cela ne vous permet toujours pas de choisir des champs, vous devez les taper.

0
Kobi