2011-02-08 15 views
23

¿Hay alguna manera de generar un ToString() usando Visual Studio 2010?¿Hay un generador ToString() disponible en Visual Studio 2010?

¡Realmente no quiero hacer esto a mano!

[EDIT]

Busco un simple representación de cadena de mi modelo. En IDEs anteriores * La generación de ToString se ha habilitado en la interfaz de usuario usando plantillas simples y selección de campo.

Actualmente las implementaciones predeterminadas de Equals y Hashcode se ofrecen en un patrón similar. Esperaba que hubiera algo similar para ToString.

Parece que no de forma predeterminada, ¡gracias por las respuestas!

(* este es mi primer proyecto .net)

+1

Sobre qué base se debe generar la representación de cadena? – anthares

+1

Hay en ReSharper, no he utilizado VS sin él así que realmente no sé si hay uno;) – Eduard

+1

¿Te refieres a una 'anulación'? Si es así, simplemente escriba 'anular', espacio y seleccione 'ToString' de la lista; generará el cuerpo del método por usted. –

Respuesta

7

Usted puede crear su propio fragmento personalizado para cada código repetitivo y acceder a él desde Intellisence
Aquí es un buen tutorial http://msdn.microsoft.com/en-us/library/ms165392.aspx

Tener un buen vistazo a cómo crear fragmentos con reemplazos. Puedes crear estructuras bastante genéricas.

+1

No tengo idea de por qué se aceptó esta solución. Proporciona, en el mejor de los casos, información relacionada tangencialmente. Los fragmentos no tienen el poder de hacer lo que el OP solicita. – erich2k8

-3

Desde la lógica del método anulado ToString() dependerá de sus propias necesidades de negocio, lo único que podía imaginar es un complemento que crea la vaciar ToString() anular para que llame a base.ToString() dentro, si a continuación, no personaliza su contenido, no tiene sentido tenerlo así.

Visual Studio ya te ayuda mucho, al menos en C#, si comienzas a escribir anulaciones públicas.

+2

ni siquiera tiene que escribir 'public'. Si comienza con la anulación y selecciona el método 'ToString' en el menú desplegable, el público se agregará automáticamente. –

+0

Hola, no lo sabía. –

+4

"lo único que podía imaginar" ... ¿qué tal las variables locales impresas como Eclipse? No veo cómo eso sería más allá de la imaginación. – eis

-3

ToString() es un método que se encuentra en object por lo que no necesita agregarlo a todas sus clases, solo si necesita anular y cambiar el comportamiento.

+4

Parece que te perdiste el punto. Lainie pregunta si VS generará automáticamente el método como Eclipse y NetBeans. No siempre se puede confiar en tener un depurador presente, y poder volcar el estado del objeto a un registro es esencial. –

1

Si no escribe su propio método ToString, Object proporciona uno para usted (aunque no es muy útil, ya que solo devuelve el espacio de nombres y el nombre del tipo de objetos).

De lo contrario, tiene que crearlo usted mismo, ya que el IDE no puede saber lo que desea generar como método ToString de un objeto.

+15

Eclipse y NetBeans ofrecen un volcado de sus variables locales, que es lo que creo que está pidiendo. Llegué a este hilo en busca de la misma respuesta. –

0

Si necesita una mejor representación de su objeto durante la depuración se puede utilizar el DebuggerDisplayAttribute:

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

Esto puede ser más rápido que anulando ToString, pero todavía no le permite elegir los campos, tiene para escribirlos

2

mayor dolor que VS 2010 no tiene ni siquiera un método ToString autogenerate, la sintaxis es lo suficientemente cerca de Java donde solía Ecilpse para generar el ToString y luego pegué en VS ...

4

No hace existen en VS listos para usar, pero lo hace en el ReSharper plugin, si no desea implementarlo usted mismo. El complemento es comercial, pero personalmente creo que vale la pena el dinero.

Con ReSharper, sería alt + ins -> reemplazando miembros -> tostring mientras el nombre de clase está en el cursor.

+0

alt + ins -> los miembros de formato también generan un ToString en R # 7.1. ReSharper es una herramienta indispensable. – Travis

3

Tal vez debería echar un vistazo a AutoCode 4.0. Es una extensión de Visual Studio que traerá algunos fragmentos con ella.

Por ejemplo, podría algún lugar dentro de su clase de escribir simplemente tostr y pulse Ctrl +Introduzca y generará automáticamente el método ToString() que concatena todas las propiedades públicas de la clase.

+1

Pero desearía que hubiera uno para VS 2013 :-( –

3

Puede utilizar la 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

Creo que esta es una buena sugerencia y le di un voto positivo. Sin embargo, tenga cuidado con cualquiera que esté tratando de hacer esto desde VB en lugar de C#: http://stackoverflow.com/ q/35092412/165164 –

1

con la reflexión del Código en realidad se puede codificar un método 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; 
} 
Cuestiones relacionadas