2009-11-02 11 views
8

Klasa Application w System.Windows.Forms ma pewne właściwości, które mogą być całkiem przydatne. NpC#: Dlaczego aplikacja znajduje się w System.Windows.Forms?

  • NazwaProduktu
  • ProductVersion
  • NazwaFirmy
  • ExecutablePath
  • StartupPath
  • CommonAppDataPath
  • CommonAppDataRegistry
  • UserAppDataPath
  • UserAp pDataRegistry
  • LocalUserAppDataPath

Dlaczego są one w w klasie w System.Windows.Forms? Co się stanie, jeśli chcę uzyskać dostęp do CommonAppDataPath w aplikacji konsolowej? Czy muszę wtedy odwołać się do System.Windows.Forms.dll, czy istnieje alternatywa dla aplikacji konsolowych?

Odpowiedz

1

Cytat z dokumentacji MSDN System.Windows.Forms przestrzeni nazw:

Przestrzeń nazw System.Windows.Forms zawiera klasy do tworzenia aplikacji opartych na systemie Windows, które w pełni korzystać z bogatych funkcji interfejsu użytkownika dostępnych w systemie operacyjnym Microsoft Windows.

Jedynym prawdziwym powodem, dla którego widzę, że klasa Application znajduje się w przestrzeni nazw System.Windows.Forms, jest to, że obsługuje wiadomości systemu Windows, które zazwyczaj są publikowane przez formanty formularzy.

+1

Tak, to prawda. Sądzę, że ktoś z Microsoftu zawiedli, jeśli chodzi o zasadę jednej odpowiedzialności, czy coś takiego ...: p – Svish

+0

Nie byłby to pierwszy raz! : P – James

9

Na ścieżkach, można też spojrzeć na klasy Environment w .NET:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

i istnieje cały zabił „specjalnych” foldery można prosić.

Nazwa firmy i inne opcje są domyślnie pobierane z "AssemblyInfo.cs" w folderze "Właściwości" - jeśli posiadasz taki plik, możesz również uzyskać do niego dostęp w kodzie.

Hm, z tymi ścieżkami trzeba dołączyć nazwę firmy i produktu nazwę i taki sam mimo ...

Tak, to właśnie zespół System.Windows.Forms robi dla ty. Jeśli nie masz aplikacji WinForm, musisz to zrobić samodzielnie, to prawda.

Marc

+0

+1, brzmi dobrze dla mnie, a wszystkie użyteczne rzeczy są dostępne w dowolnej aplikacji .net, nie ograniczając się do winforms –

+0

Hm, przy tych ścieżkach musisz dodać nazwę firmy i nazwę produktu i takie sobie .. – Svish

+0

@Svish: Nie rozumiem, co masz na myśli - są to tylko domyślne "foldery specjalne", które Windows wewnętrznie przechowuje - katalog AppData użytkownika lub podobne rzeczy. –

0

klasa Aplikacja uruchamia wiadomość win32 pętlę który jest ściśle związany z Windows Forms.

0

Można uzyskać informacje szukasz używając nazw Assembly

+0

Czy masz przykład? – Svish

2

informacje takie jak „NazwaProduktu” pochodzi od głównego zespołu w aplikacji WinForms. W aplikacji ASP.NET nie ma żadnego "głównego" zestawu.

Jeśli korzystasz z konta usługi bez profilu (co często może się zdarzyć w przypadku aplikacji ASP.NET), nie będzie opcji UserAppDataPath - w rzeczywistości próba wyrejestrowania właściwości UserAppDataPath spowoduje zgłoszenie wyjątku.

Nie ma sensu ujawniać tych informacji w aplikacji ASP.NET.

+0

Dobre punkty. Nie myślałem o stronie ASP.NET rzeczy :) – Svish

Powiązane problemy