Globale variable Ansatz in C# - Windows Forms-Anwendung? (ist public static class GlobalData die besten)
Will ich haben einige benutzerdefinierte Konfiguration (Lesen aus Datei) zur Verfügung, während mein C# - Windows Forms-Anwendung.
Ist das Konzept sagen:
- erstellen einer statischen Klasse, z.B. "public static class GlobalData"
- laden von der "Last" - Aktion der wichtigsten Formular-Ereignis
Wie klingt das? Ist das der best-practice-Weg, es zu tun?
- Wie über die Verwendung der built-in-Einstellungen " Funktion von Windows Forms?
- Oder die Ressourcen-Datei, wenn Sie die Einstellungen für die Fehler-Nachrichten zum Beispiel.
- Ich möchte hinzufügen, dass statische Daten, die nicht allgemein anerkannten 'best practice'.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie andere gesagt haben, die Sie verwenden können, AppSettings speichern einfache Daten. Die Grundlagen sind einfach, jenseits von Ihnen ist schwer (siehe App.Config und Custom Configuration Sections). Sie können auch Klassen serialisieren nach XML oder JSON, schreiben Sie benutzerdefinierte Speicher-Formate, Datenbanken, etc.
Machen die Konfiguration der gesamten Anwendung ist ein eigenes Thema. Statische Klassen und Singletons sind von Natur aus schwierig,test, und die Einführung von Kupplung in Ihrem ganzen anderen Klassen. Eine option ist die Erstellung einer Schnittstelle für die Konfiguration der Daten-Klasse erstellen und laden der Konfiguration auf Start, dann passieren die Schnittstelle zu jeder Klasse, die es braucht (oft als Konstruktor-parameter). Dies wird als Dependency Injection.
Wenn Sie das tun eine Menge, es gibt Bibliotheken, die es leichter machen wird (nachdem Sie vorbei an der Lernkurve). Sehen Liste der .NET Dependency Injection-Container (IOC).
Nachschlagen ConfigurationManager.AppSettings.
Beispielcode an http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx
AppSettings
.Ich würde zögern, eine "GlobalData" statische Klasse, wie es riecht nach einer generischen Utils-Typ CatchAll-Klasse, die am Ende kann als Auffangbecken für alle Arten von Müll. Ich würde lehnen Sie sich mehr in Richtung der Windows-Forms-Einstellungen (ob User oder Application settings) zum speichern der Konfigurations-information. Dann werden die Konfigurations-Daten können abgerufen werden von überall auf Ihre Winforms-Projekt mit
Properties.Settings.Default.MySetting
.Mit dieser sagte, gibt es einige Dinge, die ich speichern kann in eine statische Klasse. Ich habe zum Beispiel eine statische SqlDBConnectionInfo-Objekt, das enthält meine server -, Datenbank-und Anmeldeinformationen, die verwendet werden kann für die Herstellung einer Sql-Verbindung-Objekt oder SMO-backup/restore-Operationen. Dieses statische Objekt wird instanziiert auf login und jede andere Klasse braucht, um zu arbeiten mit der SQL-Datenbank in irgendeiner Weise greifen kann, das statische Objekt.
Edit: Eine andere Möglichkeit ist, wenn Sie zu Deserialisieren/serialisieren Sie Ihre Konfiguration, Daten über eine Instanz der Klasse, Sie konnte erstellen eine statische Eigenschaft in Ihrem Programm.cs, halten würde die Instanz des configuration-Objekt deserialisiert. Dann andere Klassen in Ihrem Projekt verweisen können, um Ihre Konfiguration Daten mit:
MyProjectName.MyConfigurationObject
.Ich benutze die Standard-Einstellungen-Datei für die einfache Werte wie Fensterpositionen und-Größen. Es ist schön, daß die Einstellungen zusammengestellt, die in Eigenschaften für Sie. Implementieren Sie die anderen Einstellungen so, wie Sie wollen.
Ich nicht verwenden-Anwendungseinstellungen-Dateien sehr oft in Windows Forms. Ich habe Sie die ganze Zeit in ASP.NET. Manchmal habe ich Informationen zu speichern
DataTables
im Speicher und verwenden Sie dieDataTable.Load
undWriteXml
Funktionen zur Speicherung der Informationen.Bezüglich der globalen Zugriff in Windows Forms, I eine Komponente hinzufügen-Klasse, um das Projekt und erstellen Sie eine Globale, statische Instanz in Main. Kann ich dann die Referenz der Instanz von allen Formularen und hinzufügen von globalen Daten dieser Komponente. Die Daten ausgesetzt sind, wie Eigenschaften oder über Funktionen.
Befolgen Sie die folgenden Schritte zum erreichen von Globalen Daten Erhaltung:
statische Klasse Globals
{
static String name;
static String email;
Wenn Sie login-Seite, füllen Sie die statische Klasse zum Beispiel, sonst können Sie füllen Sie die statische Globale Klasse überall entsprechend Ihrer Anforderung.