2014-10-08 4 views
1

У меня есть класс с дюжиной строк типа Sentence1, Sentence2 и т. Д. Они содержат описательную часть, которую я хочу локализовать. Правильно ли мое решение (я имею в виду не только работу, но и видимый запах кода).Локализация длинного списка описаний

[Serializable] 
public class ResultType : ISerializable, IEquatable<ResultType> 
{ 
    public int IDResultType { get; set; } 
    public string ResultName { get; set; } 
    public string ResultSymbol { get; set; } 
    public bool IsTeam { get; set; } 
    public string Group { get; set; } 

public static ResultType Sentence1 = new ResultType(1, Resource.Sentence1, "FT1"); 

public static ResultType Sentence2 = new ResultType(2, Resource.Sentence2, "FT2"); 

public static ResultType Sentence3 = new ResultType(3, Resource.Sentence3, "FT3"); 
} 

ответ

0

Недостатки:

  • (если неизменны.) Язык выбран при запуске и не может быть изменен позже.
  • (If mutable.) Инкапсуляция нарушена, каждый может изменять статические экземпляры и их свойства.
  • Выбор языка непредсказуем. Когда статические экземпляры создаются таким образом, среда выполнения может выбрать вызов конструкторов статических полей перед установкой языка. (Может быть исправлено путем добавления явного статического конструктора.)

В простом приложении этого может быть достаточно. В более сложном приложении лучше добавить статические свойства. Если мусор становится проблемой, значения могут быть кэшированы.

+0

Спасибо за ответ, но я не могу его полностью понять. Что относится к прилагаемому mutable? – Revious

+0

См. [Неизменяемый объект] (http://en.wikipedia.org/wiki/Immutable_object). 'ResultType' может быть изменен извне любым кодом, статические поля его также могут быть изменены. – Athari

+0

ах, вы имеете в виду, что весь класс ResultType может быть объявлен неизменным? – Revious

Смежные вопросы