Öffentliche Konstanten in der WinRT-Komponentenbibliothek

8

Ich habe eine C # Windows Runtime -Komponente und die folgende Zeile erstellt:

%Vor%

wirft einen Fehler auf:

Typ 'Konstanten' enthält das extern sichtbare Konstantenfeld 'Constants.LOG_ENABLED'. Konstanten können nur in Windows Runtime Enumerationen angezeigt werden

Was bedeutet dieser Fehler? Und wie kann ich Konstanten deklarieren?

    
csaam 12.12.2012, 21:07
quelle

1 Antwort

4

Das ist eine alte Frage, aber ich gebe meine zwei Cents nicht weniger. const und public ist eine gefährliche Kombination und wird häufig missbraucht. Dies liegt daran, dass, wenn ein öffentliches const-Feld in einer Bibliothek geändert wird, die Bibliothek nicht einfach ersetzt werden kann, sondern alle Clients dieser Bibliothek neu erstellt werden müssen, da sie den tatsächlichen Wert im Client und nicht die Referenz kopiert hätte zu diesem Wert.

Eine Möglichkeit ist, so etwas zu tun, wenn Sie wirklich eine öffentliche "Konstante" wollen:

%Vor%

Dies schlägt jedoch auch in der WinRT-Komponentenbibliothek fehl

  

'WindowsRuntimeComponent1.Constants' enthält ein extern sichtbares Feld   'System.Boolean WindowsRuntimeComponent1.Constants.LOG_ENABLED'.   Felder können nur durch Strukturen freigelegt werden.

Eine andere Alternative, die tatsächlich funktioniert, ist

%Vor%

Ich bin mir nicht ganz sicher, warum es nicht möglich ist, eine öffentliche const oder readonly in einer WinRT-Komponentenbibliothek zu haben, da es in einer normalen Klassenbibliothek möglich ist.

Nach einigem Lesen scheint es, dass öffentliche Felder auf Strukturen beschränkt sind und Strukturen nur öffentliche Felder enthalten dürfen.

Wie Sie in den Kommentaren gesagt haben, war es eine gute Option, sie auf intern zu ändern, wenn Sie sie nicht von einer externen Quelle verwenden.

    
Murdock 05.03.2015 16:42
quelle