Подтвердить что ты не робот

Есть ли в Visual Studio 2010 генератор ToString()?

Есть ли способ сгенерировать ToString() с помощью Visual Studio 2010?

Я действительно не хочу этого делать вручную!

[EDIT]

Я ищу простое строковое представление моей модели. В предыдущих IDE * В пользовательском интерфейсе была включена поддержка ToString с использованием простых шаблонов и выбора полей.

В настоящее время по умолчанию реализации Equals и Hashcode предлагаются аналогичным образом. Я надеялся, что что-то похожее на ToString.

Кажется, не по умолчанию - спасибо за ответы!

(* это мой первый проект .net)

4b9b3361

Ответ 1

Вы можете создать свой собственный фрагмент кода для каждого шаблона кода и получить доступ к нему из IntelliSence
Вот хороший учебник http://msdn.microsoft.com/en-us/library/ms165392.aspx

Посмотрите, как создавать фрагменты с заменами. Вы можете создать довольно общие структуры.

Ответ 3

Он не существует на VS из коробки, но он делает на плагин ReSharper, если вы не хотите реализовывать это сам. Плагин является коммерческим, но я лично считаю, что он стоит денег.

С ReSharper это будет alt + ins → переопределяющие элементы → tostring, а имя класса находится в курсоре.

Ответ 4

Возможно, вам стоит взглянуть на AutoCode 4.0. Это расширение Visual Studio, которое будет содержать некоторые фрагменты.

Например, вы можете где-то в своем классе просто написать tostr и нажать Ctrl + Enter, и он автоматически сгенерирует метод ToString(), который объединяет все общедоступные свойства этого класса.

Ответ 5

Вы можете использовать Проект 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);
  }
}

Ответ 6

Большая боль, которую VS 2010 не имеет даже автогенерирующего метода ToString, синтаксис достаточно близок к Java, где я использовал Ecilpse для генерации ToString, а затем вставлял его в VS...

Ответ 7

Если вы не пишете собственный метод ToString, Object предоставляет один для вас (хотя и не очень полезный, поскольку он возвращает только пространство имен и имя типа объектов).

В противном случае вы должны создать его самостоятельно, так как среда IDE не может знать, что вы хотите вывести в качестве объекта ToString.

Ответ 8

С помощью Code Reflection вы можете фактически кодировать метод ToString():

public string ToString(MyObjectClass object)
{
    Type MyObjectType = object.GetType();
    PropertyInfo[] propertyInfoList = MyObjectType.GetProperties();
    string result = "";
    foreach(PropertyInfo propertyInfo in propertyInfoList)
    {
        result += string.Format("{0}={1} ", propertyInfo.Name, propertyInfo.GetValue(object));
    }

    return result;
}

Ответ 9

Если вам нужно лучшее представление вашего объекта во время отладки, вы можете использовать DebuggerDisplayAttribute:

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

Это может быть быстрее, чем переопределение ToString, но оно по-прежнему не позволяет вам выбирать поля, вы должны ввести их.

Ответ 10

Поскольку логика переопределенного метода ToString() будет зависеть от ваших собственных потребностей бизнеса, единственное, что я мог себе представить, - это надстройка, которая создает пустую переопределяющую ToString() для вызова base.ToString() внутри, если вы то не настраивайте его содержимое, поэтому не имеет смысла это делать.

Visual Studio уже много помогает, по крайней мере, на С#, если вы начинаете вводить общедоступные переопределения.

Ответ 11

ToString() - это метод, расположенный на object, поэтому вам не нужно добавлять это ко всем вашим классам, только если вам нужно переопределить и изменить поведение.