2009-11-02 6 views
8

La classe Application dans System.Windows.Forms ont une des propriétés qui peuvent être très utiles. Par exemple:C#: Pourquoi l'application est-elle dans System.Windows.Forms?

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

Pourquoi sont-ils dans une classe à System.Windows.Forms? Et si je voulais accéder au CommonAppDataPath dans une application console? Aurais-je besoin de faire référence à System.Windows.Forms.dll alors, ou existe-t-il une alternative pour les applications console?

Répondre

1

documentation cité de l'espace de noms MSDN System.Windows.Forms:

L'espace de noms System.Windows.Forms contient des classes pour créer des applications Windows qui tirent pleinement parti des riches fonctionnalités d'interface utilisateur disponibles dans le système d'exploitation Microsoft Windows.

La seule vraie raison, je peux voir la classe d'application étant placé dans l'espace de noms System.Windows.Forms est car il gère les messages Windows qui sont généralement affichés par les contrôles de formulaire.

+1

Oui, c'est vrai. Je suppose que quelqu'un à Microsoft a foiré en ce qui concerne le principe de la responsabilité unique ou quelque chose alors ...: p – Svish

+0

Ce ne serait pas la première fois non plus! : P – James

9

Pour les chemins, vous pouvez également regarder la classe Environment dans .NET:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

et il y a toute une série de dossiers « spéciaux », vous pouvez demander. Le CompanyName et les autres options sont extraites de "AssemblyInfo.cs" dans votre dossier "Properties" par défaut - si vous avez un tel fichier, vous pouvez également y accéder vous-même en code.

Hm, avec ces chemins que vous avez à ajouter le nom de l'entreprise et le produit nom et comme vous si ...

Oui, c'est ce que l'ensemble System.Windows.Forms fait pour toi. Si vous n'avez pas d'application Winforms, vous devrez le faire vous-même, c'est vrai.

Marc

+0

+1, me semble bon, et tout le matériel utile est disponible dans n'importe quelle application .net, ne se limite pas à winforms –

+0

Hm, avec ces chemins, vous devez ajouter le nom de l'entreprise et le nom du produit et ainsi vous .. – Svish

+0

@Svish: Je ne comprends pas ce que vous voulez dire - ce ne sont que les "dossiers spéciaux" par défaut que Windows garde en interne - répertoire AppData de votre utilisateur ou des choses comme ça. –

0

classe Application lance la boucle de message win32 qui est étroitement liée aux fenêtres formes.

0

Vous pouvez obtenir l'information que vous recherchez en utilisant l'espace de noms Assemblée

+0

Avez-vous un exemple? – Svish

2

d'informations telles que « ProductName » vient de l'ensemble principal dans une application WinForms. Il n'y a pas d'assembly "principal" dans une application ASP.NET.Si vous exécutez sous un compte de service sans profil (ce qui peut souvent être le cas pour une application ASP.NET), il n'y aura pas de UserAppDataPath - en fait, si vous tentez de déréférencer la propriété UserAppDataPath, une exception sera générée.

Pour ces raisons, il ne serait pas logique d'exposer ces informations à une application ASP.NET.

+0

Bons points. Je n'ai pas pensé au côté ASP.NET :) – Svish

Questions connexes