Ich erstelle eine Suchklasse, so dass in allen Projekten ein konstanter Wert verwendet wird. Die Sache ist, es gibt mehrere Lösungen, um so etwas zu schaffen. Ich könnte eine einzelne Klasse mit Enums, Strukturen oder Konstanten darin erstellen oder eine einzelne Klasse für jedes 'Objekt' erstellen. Ich frage mich, was wäre die beste Lösung.Suchklasse verwenden enum, struct, public const, etwas anderes?
Zuerst dachte ich, so etwas wie dies zu tun:
public static class Defines
{
public enum PAGELAYOUT_NAMES
{
STANDARD = "Standard"
}
}
Aber persönlich mag ich nicht Strings in Aufzählungen, die viel mit. Eine andere Möglichkeit wäre, eine Struktur zu verwenden, die, wenn Sie den Code sehen noch hässlich ist:
public static class Defines
{
public struct PAGELAYOUT_NAMES
{
public static string STANDAARD = "Standaard";
}
}
Dieses etwas besser aussieht, könnte aber verwirrend sein, wenn eine Menge von Optionen mit:
public static class Defines
{
public const string PAGELAYOUT_NAMES_STANDARD = "Standard";
}
public static class PageLayout
{
public const string STANDARD = "Standard";
}
Alle anderen Vorschläge:
Während diesen Beitrag eingeben, ich denke, das wird die beste Option/clean sein? Das Auffüllen des Projekts mit mehreren Klassen, die nur einige Konstanten definieren, scheint mir wie viel Overhead und Unordnung.
Bearbeiten Es war nicht sehr klar im ursprünglichen Kontext, aber die Lookup-Werte sind nicht auf Strings beschränkt. Einige sehr gute Vorschläge sind nur möglich, wenn Sie nur Strings verwenden, aber Int's, DateTime und andere Typen müssen ebenfalls unterstützt werden. Hab ein paar nette Ideen aus den Antworten hier, ich werde ausprobieren, welche am besten in meinem aktuellen Projekt funktionieren wird.
Finale implementierte Lösung Dank der Vorschläge unten, habe ich die Lookup-Klassen wie folgt umgesetzt:
internal class Base<T>
{
internal T Value{ get; private set;}
internal Base(T value)
{
Value = value;
}
}
public class PageLayout
{
public static string Standard { get { return new Base<string>("Standard").Value; } }
}
Dies beruht auf einer Antwort weiter unten. Grund ist, weil ich jetzt dies für Nicht-Strings & Integer auch verwenden kann, was nicht wirklich möglich ist mit einer enum mit einer Beschreibung und einer Ressource-Datei, obwohl das für mich sauberer fühlen würde.
Obwohl ich die Reinheit von Iain Galloway seinen Vorschlag mag, habe ich diese implementiert, weil Sie auch nicht-String-und Integer-Werte wie Guids hinzufügen können, DateTime usw. –