2016-06-23 9 views
0

Ich habe ein Xamarin Forms-Projekt. Ich möchte verschiedene Strings in vielen Klassen angeordnet organisieren: Wie ist das beste Muster, um konstante Zeichenfolge zu behandeln? (Vielleicht hängt die Frage, ob Xamarin dies nicht unterstützt, mit einer generischen .net-Anwendung zusammen).Wie behandelt (Konstante) Zeichenfolge in Xamarin Forms

Statische Klasse mit get/set-String-Eigenschaften? Enum von Saiten? (Ich habe noch nicht versucht)

Vielen Dank für jeden Vorschlag!

Lewix

Antwort

1

Wenn Sie über Anwendung sprechen sind breit konstanten Strings, die Informationen darstellen, die den Kontext zu konfigurieren, dass sie in (dh connection, URL, etc), dann können Sie diese in den Eigenschaften Ihrer Anwendung setzen speichern . Auf diese Weise können Sie die Konfiguration auch außerhalb Ihrer Lösung ändern, indem Sie die Konfigurationsdatei ändern.

Wenn Sie die Daten in einer Konfigurationsdatei speichern möchten nicht, dann sie in einer statischen Klasse zu speichern ist nicht eine schreckliche Wahl, ich kenne Leute, die solche Konstanten in ihrer Program Klasse (zB Program.Constants.<constant> definieren möchten. I mich wählen, um nur Konstanten zu definieren, wo ich sie brauche, anstatt sie auf die gesamte Anwendung auszusetzen, es sei denn, sie Konfigurationsvariablen sind. In diesem Fall habe ich die Eigenschaften der Anwendung verwenden.

https://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager(v=vs.110).aspx

1

ich lieber mit. Net-Resources-Dateien (resx) für Strings Dies erleichtert das Auffinden von Anwendungsstrings im Projekt und die Internationalisierung Die native Unterstützung wird nativ für alle Plattformen ohne plattformspezifischen Code oder Ressourcen unterstützt, also keine Localizable.plist auf iOS oder strings Datei auf Android. Dies hilft auch nichttechnischen Teammitgliedern, diese Dateien mit einem der manyexistingresxeditors zu ändern.

Zusätzlich erhalten Sie statische Klasse mit Konstanten für alle definierten Strings.

Beispiel aus dem xamarin docs extrahiert:

AppResources.resx:

<data name="NotesLabel" xml:space="preserve"> 
    <value>Notes:</value> 
    <comment>label for input field</comment> 
</data> 
<data name="NotesPlaceholder" xml:space="preserve"> 
    <value>eg. buy milk</value> 
    <comment>example input for notes field</comment> 
</data> 
<data name="AddButton" xml:space="preserve"> 
    <value>Add new item</value> 
</data> 

Verwendung in Code:

myLabel.Text = AppResources.NotesLabel; 
myEntry.Placeholder = AppResources.NotesPlaceholder; 
myButton.Text = AppResources.AddButton; 

ein konsistentes Verhalten auf allen Plattformen Gewinnung:

enter image description here