Questa è una vecchia domanda, ma non darei i miei due cent non meno. const e public sono una combinazione pericolosa e spesso vengono ignorate. Ciò è dovuto al fatto che se un campo const pubblico viene modificato in una libreria, la libreria non può essere solo sostituita, ma piuttosto tutti i client di tale libreria devono essere ricostruiti poiché avrebbero copiato il valore reale nel client e non il riferimento a quel valore.
Una possibilità è quella di fare qualcosa di simile se si voleva davvero un pubblico "costante":
public static class Constants
{
public static readonly bool LOG_ENABLED = false;
}
Tuttavia questo non funziona anche nella libreria dei componenti WinRT
'WindowsRuntimeComponent1.Constants' contains externally visible field 'System.Boolean WindowsRuntimeComponent1.Constants.LOG_ENABLED'. Fields can be exposed only by structures.
Un'altra alternativa che fa davvero lavoro è
public static class Constants
{
public static bool LOG_ENABLED { get { return false; } }
}
Non sono esattamente sicuro del motivo per cui non è possibile ve un public const o readonly in una libreria di componenti WinRT poiché è possibile in una normale libreria di classi.
Dopo alcune letture sembra che i campi pubblici siano limitati alle strutture e che le strutture possano contenere SOLO campi pubblici.
Come hai detto nei commenti, cambiarlo in interno era una buona opzione se non lo si utilizza da una fonte esterna.
Ho funzionato: reso interno invece che pubblico, che in ogni caso penso sia il modificatore di visibilità corretto. – csaam
Alcuni suggerimenti: In .NET e C# le costanti non sono maiuscole (perché non è una cosa pre-processore), dovrebbero usare TitleCase. In secondo luogo, dovresti controllare la registrazione con un parametro di configurazione, non una costante. – Dai
Un po 'vecchio, ma dovresti postare la tua soluzione come risposta e accettarla in modo che le persone possano vedere che questa domanda ha una risposta. – BlargleMonster