2011-02-08 19 views
23

Czy istnieje sposób wygenerowania ToString() przy użyciu programu Visual Studio 2010?Czy w programie Visual Studio 2010 dostępny jest generator ToString()?

Naprawdę nie chcę tego robić ręcznie!

[EDIT]

szukam prosty ciąg znaków z mojego modelu. W poprzednich IDE * Generowanie ToString zostało włączone w interfejsie użytkownika przy użyciu prostych szablonów i wyboru pól.

Obecnie domyślne implementacje Equals i Hashcode są oferowane w podobnym stylu. Miałem nadzieję, że jest coś podobnego dla ToString.

Wygląda na to, że nie jest domyślnie - dzięki za odpowiedzi!

(* to mój pierwszy projekt .net)

+1

na jakiej podstawie powinno generować ciąg znaków? – anthares

+1

Jest w ReSharper, nie mam VS użytkownika bez niego, więc naprawdę nie wiem, czy istnieje;) – Eduard

+1

Czy masz na myśli "przesłonić"? Jeśli tak, to po prostu wpisz "override", spacja i wybierz "ToString" z listy - wygeneruje to ciało metody dla ciebie. –

Odpowiedz

7

Można utworzyć własne niestandardowe dla każdego fragmentu kodu boilerplate i do niego dostęp z IntelliSence
Oto dobry tutorial http://msdn.microsoft.com/en-us/library/ms165392.aspx

Przyjrzyj się, jak tworzyć fragmenty z zamienników. Możesz tworzyć dość ogólne struktury.

+1

Nie mam pojęcia, dlaczego to rozwiązanie zostało zaakceptowane. Zapewnia w najlepszym przypadku informacje styczne. Snippety nie mają uprawnień do robienia tego, o co prosi OP. – erich2k8

-3

Ponieważ logika zamienione na ToString() metody zależeć będzie od własnych potrzeb biznesowych, jedyne co mogę sobie wyobrazić jest dodatek który tworzy pusty ToString() zastąpić, jeśli nie dostosujesz jego zawartości, nie ma sensu, aby tak było.

Program Visual Studio już bardzo pomaga, przynajmniej w języku C#, jeśli zaczniesz pisać nadpisywanie publiczne.

+2

nie musisz nawet pisać "public". Jeśli zaczniesz z nadpisaniem i wybierzesz metodę "ToString" z menu rozwijanego, publiczna zostanie dodana automatycznie. –

+0

Cześć, nie wiedziałem. –

+4

"Jedyne, co mogłem sobie wyobrazić" ... co powiesz na lokalne zmienne wydrukowane tak jak Eclipse? Nie rozumiem, jak to byłoby poza wyobraźnią. – eis

-3

ToString() jest metodą opartą na object, więc nie trzeba dodawać jej do wszystkich zajęć, tylko wtedy, gdy trzeba ją zastąpić i zmienić.

+4

Wygląda na to, że przegapiłeś ten punkt. Lainie pyta, czy VS automatycznie wygeneruje taką metodę, jak Eclipse i NetBeans. Nie zawsze można polegać na obecności debuggera i konieczne jest zrzucenie stanu obiektu do logu. –

1

Jeśli nie napiszesz własnej metody ToString, Object udostępnia ją (choć niezbyt przydatna, ponieważ zwraca tylko nazwę i nazwę typu obiektów).

W przeciwnym razie należy go utworzyć samodzielnie, ponieważ IDE nie może wiedzieć, co ma zostać wydrukowane jako metoda obiektu obiektu ToString.

+15

Eclipse i NetBeans oferują zrzut lokalnych zmiennych, o czym myślę, że ona prosi. Przyszedłem do tego wątku w poszukiwaniu tej samej odpowiedzi. –

0

Jeśli potrzebujesz lepszej reprezentacji swojego obiektu podczas debugowania można użyć DebuggerDisplayAttribute:

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

To może być szybsze niż nadrzędne ToString, ale to nadal nie pozwala wybrać pola, trzeba aby je wpisać.

2

Major Pain, że VS 2010 nie ma nawet metodę Wygeneruj ToString, składnia jest wystarczająco blisko do Java, gdzie kiedyś Ecilpse wygenerować toString a następnie wklejony do VS ...

4

to nie istnieje na VS po wyjęciu z pudełka, ale robi to na ReSharper plugin, jeśli nie chcesz go zaimplementować samodzielnie. Wtyczka jest komercyjna, ale ja osobiście uważam, że jest warta pieniędzy.

Z ReSharper będzie to alt + ins -> overriding members -> tostring, podczas gdy nazwa klasy znajduje się na kursorze.

+0

alt + ins -> członkowie formatowania również generują toString w R # 7.1. ReSharper jest nieodzownym narzędziem. – Travis

3

Może powinieneś rzucić okiem na AutoCode 4.0. Jest to rozszerzenie Visual Studio, które będzie zawierało kilka fragmentów.

Na przykład można gdzieś w swojej klasie prostu napisać tostr i naciśnij Ctrl + Wprowadź i automatycznie wygenerować metodę ToString() że skleja wszystkie właściwości publiczne klasy.

+1

Ale żałuję, że nie było jedno dla VS 2013 :-( –

3

można użyć StatePrinter project

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); 
    } 
} 
+0

Myślę, że jest to dobra sugestia i dał mu uprowadzenie.Ale strzeżcie się, kto próbuje to zrobić z VB zamiast C#: http://stackoverflow.com/ q/35092412/165164 –

1

Z Code Odbicie rzeczywiście można zakodować toString() metoda:

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; 
} 
Powiązane problemy