答案 0 :(得分:3)
从它的声音来看,Enum更适合你想要做的事情。
public enum MyConstants
{
FirstName,
LastName,
Title
}
public void CreateMe(Dictionary<MyConstants, string> propertyBag)
{
...
}
<强>已更新强>
您可以将其与属性结合起来,将每个枚举与特定字符串关联起来,如下所示:
public enum PropertyNames
{
[Description("first_name")]
FirstName,
[Description("last_name")]
LastName,
[Description("title")]
Title
}
可以通过扩展方法轻松获取与每个枚举值关联的每个描述属性的值,如下所示:
public static class EnumExtensions
{
public static string GetDescription(this Enum value)
{
FieldInfo fieldInfo = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes =
(DescriptionAttribute[])fieldInfo.GetCustomAttributes(
typeof(DescriptionAttribute),
false);
if (attributes != null &&
attributes.Length > 0)
return attributes[0].Description;
else
return value.ToString();
}
}
然后在“CreateMe”方法中,您可以通过执行与此类似的操作来获取每个词典条目的描述和值:
void CreateMe(Dictionary<PropertyNames, string> propertyBag)
{
foreach (var propertyPair in propertyBag)
{
string propertyName = propertyPair.Key.GetDescription();
string propertyValue = propertyPair.Value;
}
}
答案 1 :(得分:2)
即使已经回答了这个问题,还有另一种方法,如下:
public class MyOwnEnum
{
public string Value { get; private set; }
private MyOwnEnum(string value)
{
Value = value;
}
public static readonly MyOwnEnum FirstName = new MyOwnEnum("Firstname");
public static readonly MyOwnEnum LastName = new MyOwnEnum("LastName");
}
它的行为与Enum相同,可以在代码中使用相同的语法。我不能赞扬那些提出它的人,但我相信我在搜索具有多个价值的枚举时遇到了它。
答案 2 :(得分:0)
使用字符串,您可以强制执行以下事实:密钥来自有限的一组vialue编译时间。
使用枚举或自定义类(可能使用隐式转换为字符串)。