C #: Warum ist die Anwendung in System.Windows.Forms?

8

Die Klasse Application in System.Windows.Forms hat einige Eigenschaften, die sehr nützlich sein können. Zum Beispiel:

  • Produktname
  • Produktversion
  • Firmenname
  • AusführbarerPfad
  • StartupPath
  • CommonAppDataPath
  • CommonAppDataRegistry
  • UserAppDataPath
  • UserAppDataRegistry
  • LocalUserAppDataPath

Warum sind diese in einer Klasse in System.Windows.Forms ? Was, wenn ich in einer Konsolenanwendung auf CommonAppDataPath zugreifen möchte? Müsste ich dann auf System.Windows.Forms.dll verweisen, oder gibt es eine Alternative für Konsolenanwendungen?

    
Svish 02.11.2009, 09:31
quelle

5 Antworten

1

Zitiert nach MSDN System.Windows.Forms Namespace-Dokumentation:

Der System.Windows.Forms-Namespace enthält Klassen zum Erstellen von Windows-basierten Anwendungen, die die umfassenden Funktionen der Benutzeroberfläche im Microsoft Windows-Betriebssystem voll ausnutzen.

Der einzige wirkliche Grund, warum ich die Application-Klasse im System.Windows.Forms-Namespace sehen kann, ist, dass sie Windows-Nachrichten behandelt, die normalerweise von Form-Steuerelementen gepostet werden.

    
James 02.11.2009, 10:08
quelle
9

Für die Pfade können Sie auch die Klasse Environment in .NET betrachten:

%Vor%

und es gibt eine ganze Reihe von "speziellen" Ordnern, nach denen Sie fragen können.

Der Name CompanyName und andere Optionen werden standardmäßig aus dem Ordner "AssemblyInfo.cs" in Ihrem Ordner "Properties" abgerufen. Wenn Sie eine solche Datei haben, können Sie diese auch selbst im Code aufrufen.

  

Hm, mit diesen Pfaden müssen Sie   Fügen Sie den Firmennamen und das Produkt hinzu   Name und so selbst obwohl ...

Ja, das macht die System.Windows.Forms-Assembly für Sie. Wenn Sie keine Winforms-App haben, müssen Sie das selbst tun, das stimmt.

Marc

    
marc_s 02.11.2009 09:37
quelle
2

Informationen wie "ProductName" stammen von der Hauptbaugruppe in einer WinForms-Anwendung. Es gibt keine "Haupt" Assembly in einer ASP.NET-Anwendung.

Wenn Sie unter einem Dienstkonto ohne ein Profil ausgeführt werden (was bei einer ASP.NET-Anwendung häufig der Fall sein kann), wird kein UserAppDataPath vorhanden sein. Tatsächlich versucht die Dereferenzierung der UserAppDataPath-Eigenschaft eine Ausnahme auszulösen.

Aus diesen Gründen ist es nicht sinnvoll, diese Informationen einer ASP.NET-App zugänglich zu machen.

    
Joe 02.11.2009 11:28
quelle
0

Die Anwendungsklasse startet die Win32-Meldungsschleife, die eng mit Windows-Formularen verknüpft ist.

    
Vitaliy Liptchinsky 02.11.2009 09:45
quelle
0

Sie können die gesuchten Informationen mit dem Assembly-Namespace

abrufen     
Raj 02.11.2009 10:17
quelle

Tags und Links