у меня есть класс, который выглядит примерно так:Singleton с открытыми свойствами
public class Constants
{
private static readonly Lazy<Constants> lazy =
new Lazy<Constants>(() => new Constants());
public static Constants Instance { get { return lazy.Value; } }
Dictionary<string, List<string>> validApplicationTypes;
public Dictionary<string, List<string>> ValidApplicationTypes
{
get { return validApplicationTypes; }
}
private Constants()
{
// validApplicationTypes is populated from a DB table
}
}
Теперь за пределами получить доступ действительных типов приложений, как это:
Constants.Instance.ValidApplicationTypes
Что бы быть лучшим способом, чтобы добавить куча строковых констант для этого класса? я должен добавить их как:
private static readonly string message= "SomeMessage";
public static string Message
{
get { return message; }
}
и доступ к ним как: Constants.Message
или я должен добавить их так:
private string message= "SomeMessage";
public string Message
{
get { return message; }
}
и доступ к ним как: Constants.Instance.Message
Есть любая разница между этими двумя способами создания их внутри синглтона и доступа к ним извне?
Просто потому, что 'static' не делает его константа. Могут ли они быть 'const' или' static readonly'? – Yuck
Вы правы, я скучал по readonly. Исправлено: – DVM
Используйте 'const' или' static readonly', я не вижу причин, чтобы сделать их членами экземпляра. –