假设我有一个这样的枚举定义:
public enum eCommentType
{
NormalComment = 0,
OpenningComment = 1,
StartProgressCommetn = 2,
ClouserComment = 3,
ReopennignComment = 4
}
现在我想在网页上显示enum
选项。
我可以使用switch
语句,但是当我添加新值时,我将不得不更新我的switch语句。
为每个值或事件附加标签更好的资源ID以支持多语言界面的最佳方法是什么?
P.S 我将MVC用于我当前的项目,但我希望能够在许多技术中使用的一般答案,即设计模式。
答案 0 :(得分:1)
事件更好的资源ID支持多语言界面?
您可以从资源中获取文字
var text = normalComment.GetName();
public static class EnumExtension
{
public static string GetName(this eCommentType type)
{
return Strings.ResourceManager.GetString(type.ToString());
}
}
答案 1 :(得分:0)
to string返回枚举的名称,或者你可以为每个枚举使用标签[Description(“yournamehere”)]并使用
public enum eCommentType
{
[Description("my super normal comment")]
NormalComment = 0,
[Description("my super opening comment")]
OpenningComment = 1,
[Description("etc")]
StartProgressCommetn = 2,
[Description("etc")]
ClouserComment = 3,
[Description("etc")]
ReopennignComment = 4
}
答案 2 :(得分:0)
这种方法与Fabio Marcolini提供的方法基本相同,只是自定义类型转换器会使描述可以本地化
答案 3 :(得分:0)
如果您需要仅内部项目的描述以向用户显示,您可以使用:
Enum.GetValues ,如:
var values = Enum.GetValues(typeof(eCommentType));
但是,MVC通常不只是关于表示,而是UI和模型之间的绑定,所以通常你需要在屏幕上显示的 map 值实际值 of eCommentType
enum你必须有一些“mapper”将一个数据转换为另一个数据。
是的,您也可以使用相同的函数迭代所有可用的值并找到所请求的值,在得到它的INT之后,但我会简单明了switch/case
,老实说,除非枚举值数量变为大。