我有一个带有常量的静态类。我正在寻找选项来创建一个方法,该方法将字典作为参数,并将该关键字作为静态类中的常量之一。以下是带有常量的静态类。
将静态类常量作为数据类型执行
1
A
回答
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相同,可以在您的代码中使用相同的语法。我不能赞扬谁提出了它,但我相信我在搜索具有多个值的Enums时遇到了它。
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. 传递类型变量作为一般类型参数为静态
- 3. 静态常量定义类
- 4. 类中静态常量ODR
- 5. 声明非静态常量数组作为类成员
- 6. 将数组作为静态类属性的奇怪行为
- 7. 模板类中的静态常量类型
- 8. 使用静态类作为变量
- 9. 类作为静态变量的容器
- 10. 作为类型参数的非静态内部类名称
- 11. 将大量数据保存为静态类效率不高吗?
- 12. 在swift类的静态函数中访问非静态常量
- 13. 作为类的静态属性的常量内存符号
- 14. 如何遍历类的静态数据成员 - 使用变量作为类名?
- 15. C# - 静态类型不能用作类型参数
- 16. 片段作为静态类
- 17. 静态类中的静态变量和非静态类中的静态变量
- 18. 静态/非静态内部类:类型参数T隐藏类型T
- 19. FieldOperator类不包含静态常量
- 20. 静态常量类成员声明
- 21. C++类中的静态常量成员
- 22. Python静态类型?
- 23. 将常规类成员转换为静态类成员
- 24. 常量在Haskell代数数据类型
- 25. 静态类或实例作为参数?
- 26. 类型类多态数据类型
- 27. 用作模板的类中的静态常量变量
- 28. 使用静态常量+作为常量数组边界
- 29. 将日期数据类型转换为日期时间数据类型并添加静态时间
- 30. C# - 将静态类初始化为非静态类?
你的解释不清楚。 – TomTom
我同意@TomTom,根据所提供的信息,您正试图完成的任务令人困惑。 – mituw16
你只能使用反射来做到这一点。 –