常量最佳实践

时间:2016-03-16 11:14:36

标签: c# dictionary constants

我有一个简单的类,用字典值初始化,可以将其值作为字典返回,这是一个例子:

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”。 我想知道将字典键字符串存储为常量的最佳做法是什么:在与私有字段相同的类中或在设置/资源文件中?

1 个答案:

答案 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中,并编写一个单一的辅助方法来遍历对象的类层次结构,使用自定义属性查找所有属性,并生成/使用字典基于它们。