Константы лучшие практики
У меня есть простые классы, которые инициализируются со значениями словаря и могут возвращать его значения в качестве словаря, вот пример:
public class ApartmentModel
{
public int Id { get; set; }
public string Title { get; set; }
public ApartmentModel()
{
}
public ApartmentModel(IDictionary<string, object> item)
{
Id = (int)item["ID"];
Title = item["Title"].ToString();
}
public override IDictionary<string, object> FieldsValues()
{
var item = new Dictionary<string, object>
{
["ID"] = Id,
["Title"] = Title
};
return item;
}
}
Некоторые классы имеют общие поля, такие как "Id" и "Заголовок". Мне интересно, как лучше хранить строки ключей словаря как константы: в одном классе с частными полями или в файле настроек / ресурсов?
1 ответ
Похоже, что значения ваших констант соответствуют именам свойств. В подобных ситуациях лучше вообще не использовать строковые литералы, заменяя их на nameof
оператор (при условии, что используется язык C# 6)
public ApartmentModel(IDictionary<string, object> item)
{
Id = (int)item[nameof(Id)];
Title = item[nameof(Title)].ToString();
}
public override IDictionary<string, object> FieldsValues()
{
var item = new Dictionary<string, object>
{
[nameof(Id)] = Id,
[nameof(Title)] = Title
};
return item;
}
Еще лучший подход - не кодировать эти методы напрямую, заменив их одним методом, основанным на отражении и пользовательских атрибутах. Определите атрибут, который обозначает свойство для включения в FieldsValues
- генерируется IDIctionary
и написать единственный вспомогательный метод, который обходит иерархию классов вашего объекта, находит все атрибуты с настраиваемым атрибутом и создает / использует словарь на их основе.