我有一个简单的类,用字典值初始化,可以将其值作为字典返回,这是一个例子:
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”和“Title”。 我想知道将字典键字符串存储为常量的最佳做法是什么:在与私有字段相同的类中或在设置/资源文件中?
答案 0 :(得分:3)
看起来常量的值对应于属性名称。在这种情况下,最好不要使用字符串文字,替换为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
中,并编写一个单一的辅助方法来遍历对象的类层次结构,使用自定义属性查找所有属性,并生成/使用字典基于它们。