To jest stare pytanie, ale podam moje dwa centy za mniej. const i public to niebezpieczna kombinacja, której często brakuje. Wynika to z faktu, że jeśli publiczne zmienne pole zostanie zmienione w bibliotece, biblioteka nie może być po prostu zastąpiona, ale wszystkie klienty tej biblioteki muszą zostać przebudowane, ponieważ skopiowałoby to rzeczywistą wartość w kliencie, a nie odniesienie do tej wartości.
Jedną z opcji jest coś jak to zrobić, jeśli naprawdę chciał publiczne „stały”:
public static class Constants
{
public static readonly bool LOG_ENABLED = false;
}
Jednak to również nie w składniku biblioteki WinRT
'WindowsRuntimeComponent1.Constants' contains externally visible field 'System.Boolean WindowsRuntimeComponent1.Constants.LOG_ENABLED'. Fields can be exposed only by structures.
Inną alternatywą, która ma rzeczywiście praca jest
public static class Constants
{
public static bool LOG_ENABLED { get { return false; } }
}
Nie jestem do końca pewien, dlaczego nie jest możliwe v publiczną stałą lub tylko do odczytu w bibliotece komponentów WinRT, ponieważ jest to możliwe w normalnej bibliotece klas.
Po pewnym odczycie wydaje się, że pola publiczne są ograniczone do struktur, a znaki mogą zawierać tylko pola publiczne.
Tak jak powiedziałeś w komentarzach, zmiana na wewnętrzną była dobrym rozwiązaniem, jeśli nie używasz go z zewnętrznego źródła.
Gotowy do pracy: Wykonano wewnętrzny zamiast publiczny, co w tym przypadku uważam za poprawny modyfikator widoczności. – csaam
Kilka wskazówek: Stałe .NET i C# nie są wielkimi literami (ponieważ nie jest to procesor przedprocesorowy), powinny korzystać z TitleCase. Po drugie należy kontrolować rejestrowanie za pomocą parametru konfiguracyjnego, a nie stałej. – Dai
Trochę stare, ale powinieneś opublikować swoje rozwiązanie jako odpowiedź i zaakceptować je, aby ludzie mogli zobaczyć to pytanie. – BlargleMonster