2009-08-17 10 views
6

¿Es posible enviar valores a la consola desde una biblioteca de clases?Posible salida a consola desde dentro de una biblioteca de clase C#?

Por ejemplo

Console App -> calls method in -> assembly > function 

¿Es posible escribir un método Console.Out en la función de la asamblea?

Sé que en la web es posible obtener el httpcontext, y hacer una response.write.

Respuesta

14

Yup, Console.WriteLine etc. funcionará bien en una biblioteca de clases ... pero no hay garantía de que nada esté escuchando en la consola. Si lo usa desde una aplicación WinForms o una aplicación web, esa salida puede no funcionar en absoluto ...

¿Ha pensado en usar una biblioteca de registro tal como log4net?

+0

Gracias Jon, sí, uso log4net. Estoy usando esta consola, solo para 1 implementación para una presentación. –

+0

Jon, ¿qué quieres decir con _listening_? –

+0

@YairNevet: Quiero decir que aunque no fallará, la salida puede no ir a ninguna parte. –

4

Depende del tipo de aplicación que va a usar su biblioteca de clase. Si se usa en una aplicación de consola, la salida se imprimirá en la consola. Si se trata de una aplicación WinForms, Windows Service o ASP.NET, la salida se ignorará.

2

Claro que lo es, sólo tiene que utilizar System.Console.Write...

2

seguro de si el cliente de biblioteca es una aplicación de consola, simplemente llame a Console.WriteLine ("") con sus mensajes.

Si no tiene un cliente basado en la consola y desea abrir una consola para su propio uso, entonces necesita usar P/Invoke para llamar al ConsoleAlloc. Consulte here para obtener ayuda con la declaración de P/Invoke.

Habiendo dicho eso, también hay que señalar que la escritura a la consola desde una biblioteca de clases es decididamente mal diseño y usted debería considerar el uso de la red mecanismo de seguimiento/registro de puntos en su lugar (Lea detenidamente la documentación de Microsoft en System.Diagnostics)

1
  1. Si tiene un proyecto de aplicación de consola en su solución, use Console.WriteLine(), como de costumbre.
  2. De lo contrario, si tiene un proyecto de biblioteca de clases, use System.Diagnostics.Debug.WriteLine().

Las malas noticias: - Sus textos estarán en el medio de todas las líneas en Salida. - Tendrá que buscarlos. Te recomiendo que selecciones todo el texto en la Salida y pegues en una Libreta. Será más fácil encontrar lo que estás buscando.

Las buenas noticias: - Tus textos estarán solos en sus líneas. Solo el resultado de su comando System.Diagnostics.Debug.WriteLine().

Cuestiones relacionadas