C# 枚举到格式化字符串

C# 枚举到格式化字符串,c#,asp.net,enums,C#,Asp.net,Enums,这是可行的,但当我响应.write需要以“dd/mm/yy”格式显示时,我如何才能做到这一点?最简单的方法是使用一个字典,为枚举填充相应的字符串表示,即 public class WebWizForumUser { public WebWizDateFormat DateFormat { get; set; } public WebWizForumUser() { this.DateFormat = WebWizDateFormat.DDMMYY;


这是可行的,但当我响应.write需要以“dd/mm/yy”格式显示时,我如何才能做到这一点?

最简单的方法是使用一个
字典,为枚举填充相应的字符串表示,即

public class WebWizForumUser
{
    public WebWizDateFormat DateFormat { get; set; }

    public WebWizForumUser()
    {
        this.DateFormat = WebWizDateFormat.DDMMYY;
        HttpContext.Current.Response.Write(this.DateFormat);
    }
}
那你就做吧

DateMapping[WebWizDateFormat.DDMMYY] = "dd/mm/yy";

最简单的方法是只使用
字典
,为枚举填充相应的字符串表示,即

public class WebWizForumUser
{
    public WebWizDateFormat DateFormat { get; set; }

    public WebWizForumUser()
    {
        this.DateFormat = WebWizDateFormat.DDMMYY;
        HttpContext.Current.Response.Write(this.DateFormat);
    }
}
那你就做吧

DateMapping[WebWizDateFormat.DDMMYY] = "dd/mm/yy";

简单的答案是不要为此使用枚举。静态类怎么样

HttpContext.Current.Response.Write(DateMapping[this.DateFormat]);

(只是一个示例,将字段重命名为对您有意义的名称。)

简单的答案是不要为此使用枚举。静态类怎么样

HttpContext.Current.Response.Write(DateMapping[this.DateFormat]);

(只是一个示例,请将字段重命名为对您有意义的名称。)

关于此转换的规则不清楚。你可以这样做:

public static class WebWizDateFormat
{
    public const string USFormat = "MM/DD/YY";
    public const string UKFormat = "DD/MM/YY";
}

// . . .
string dateFormat = WebWizDateFormat.USFormat;
但我怀疑,这就是你的意思…;-)

这也可能对您有所帮助:

您关于此转换的规则不清楚。你可以这样做:

public static class WebWizDateFormat
{
    public const string USFormat = "MM/DD/YY";
    public const string UKFormat = "DD/MM/YY";
}

// . . .
string dateFormat = WebWizDateFormat.USFormat;
但我怀疑,这就是你的意思…;-)
这也可能对您有所帮助:

序言:我建议不要使用枚举项名称来表示数据(您可以使用给定的枚举值和类型)。我还建议使用隐式指定的枚举值,因为添加或删除枚举项等细微更改可能会产生细微的不兼容更改/错误

在这种情况下,我可以创建一个从枚举值到字符串格式的映射,例如:

this.DateFormat.ToLower().Insert(4, "\\").Insert(2,"\\");
公共枚举WebWizDateFormat
{
DDMMYY=1,
MMDDYY=2,
YYDDMM=3,
YYMMDD=4,
//但也许更好,因为这将“本地化”抽象出来
//它与上述内容并不相互排斥
//但是,.NET*已经*支持各种本地化日期格式
//下面的映射可以更改以利用
ShortUS=10,//表示“mm/dd/yy”,
LongUK=。。。,
}
公共IDictionary WebWizDateFormatMap=新字典{
{WebWizDateFormat.DDMMYY,“dd/mm/yy”},
//“本地化”版本,与MMDDYY相同
{WebWizDateFormat.ShortUS,“mm/dd/yy”},
…//为所有人定义-
};
//以后用
字符串格式=WebWizDateFormatMap[WebWizDateFormat.ShortUS];
快乐编码

序言:我建议不要使用枚举项名称来表示数据(您可以使用给定的枚举值和类型)。我还建议使用隐式指定的枚举值,因为添加或删除枚举项等细微更改可能会产生细微的不兼容更改/错误

在这种情况下,我可以创建一个从枚举值到字符串格式的映射,例如:

this.DateFormat.ToLower().Insert(4, "\\").Insert(2,"\\");
公共枚举WebWizDateFormat
{
DDMMYY=1,
MMDDYY=2,
YYDDMM=3,
YYMMDD=4,
//但也许更好,因为这将“本地化”抽象出来
//它与上述内容并不相互排斥
//但是,.NET*已经*支持各种本地化日期格式
//下面的映射可以更改以利用
ShortUS=10,//表示“mm/dd/yy”,
LongUK=。。。,
}
公共IDictionary WebWizDateFormatMap=新字典{
{WebWizDateFormat.DDMMYY,“dd/mm/yy”},
//“本地化”版本,与MMDDYY相同
{WebWizDateFormat.ShortUS,“mm/dd/yy”},
…//为所有人定义-
};
//以后用
字符串格式=WebWizDateFormatMap[WebWizDateFormat.ShortUS];

快乐编码

如果默认情况下我没有弄错,则返回枚举的字符串表示形式。我现在解释这个问题,因为你想让它变成小写并添加斜杠?史提芬:是的,声明EnUM类型为De/Mm/YY并不适用于这种情况,简单的字符串操作当然会起作用,但是考虑使用BBBYMCR的答案。如果默认情况下我没有错,返回EnUM的字符串表示形式。我现在解释这个问题,因为你想让它变成小写并添加斜杠?史提芬:是的,声明EnUM类型为DD/MM/YY不适用于这种情况,简单的字符串操作当然会起作用,但是考虑使用BBBYMCR的答案。我不喜欢在这里使用枚举,但是+1,因为这是从MMDYDY中提取的,我真的不想在这里放弃枚举的使用,但是+1,因为它将MMDDYY等抽象为“本地化”格式。