2009-11-02 10 views
8

La clase Application en System.Windows.Forms tiene algunas propiedades que pueden ser bastante útiles. Por ejemplo:C#: ¿Por qué es la aplicación en System.Windows.Forms?

  • ProductName
  • ProductVersion
  • CompanyName
  • ExecutablePath
  • StartupPath
  • CommonAppDataPath
  • CommonAppDataRegistry
  • UserAppDataPath
  • UserAp pDataRegistry
  • LocalUserAppDataPath

¿Por qué son estos en una clase en System.Windows.Forms? ¿Qué sucede si quiero acceder al CommonAppDataPath en una aplicación de consola? ¿Tendría que hacer referencia a System.Windows.Forms.dll o hay una alternativa para las aplicaciones de la consola?

Respuesta

1

citado de MSDN la documentación System.Windows.Forms espacio de nombres:

El espacio de nombres System.Windows.Forms contiene clases para crear aplicaciones basadas en Windows que aprovechan al máximo las características de la interfaz de usuario ricas disponibles en el sistema operativo Microsoft Windows.

La única razón real por la que veo que la clase Application se coloca en el espacio de nombres System.Windows.Forms es porque maneja los mensajes de Windows que generalmente se publican mediante controles de formulario.

+1

Sí, eso es cierto. Supongo que alguien en Microsoft se equivocó con respecto al principio de responsabilidad única o algo así ...: p – Svish

+0

¡No sería la primera vez tampoco! : P – James

9

Por los caminos, también puede mirar a la clase Environment en .NET:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

y hay una gran cantidad de carpetas "especiales" se puede pedir.

CompanyName y otras opciones se extraen de "AssemblyInfo.cs" en su carpeta "Propiedades" de forma predeterminada; si tiene dicho archivo, también puede acceder a ellas en el código.

Hm, con los caminos que hay que añadir el nombre de la empresa y del producto Nombre y como usted mismo, aunque ...

Sí, eso es lo que el montaje está haciendo por System.Windows.Forms tú. Si no tiene una aplicación Winforms, tendrá que hacerlo usted mismo, eso es cierto.

Marc

+0

+1, me parece bien, y todo el material útil está disponible en cualquier aplicación .net, no se limita a winforms –

+0

Hm, con esas rutas tienes que anexar el nombre de la empresa y el nombre del producto. . – Svish

+0

@Svish: no entiendo lo que quiere decir: esas son simplemente las "carpetas especiales" predeterminadas que Windows guarda internamente, el directorio AppData de su usuario o cosas por el estilo. –

0

clase de aplicación inicia Win32 mensaje de bucle que está estrechamente relacionado con formas de las ventanas.

0

Se puede obtener la información que está buscando utilizando el espacio de nombres Asamblea

+0

¿Tiene un ejemplo? – Svish

2

Información como "ProductName" proviene del conjunto principal en una aplicación Windows Forms. No hay ensamblado "principal" en una aplicación ASP.NET.

Si se está ejecutando en una cuenta de servicio sin un perfil (que a menudo puede ser el caso de una aplicación ASP.NET), no habrá UserAppDataPath; de hecho, intentar desreferenciar la propiedad UserAppDataPath generará una excepción.

Por estas razones, no tendría sentido exponer esta información a una aplicación ASP.NET.

+0

Buenos puntos. No pensé en el lado ASP.NET de las cosas :) – Svish

Cuestiones relacionadas