显然,微软的日期结构没有月份枚举 我想知道的是,是否可以创建枚举并将其附加到DateTime结构?扩展方法立即浮现在脑海中,但我不知道如何使用它们。
Dim july As DateTime.Months = DateTime.Months.July
Public Enum Months
January = 1
February = 2
March = 3
April = 4
May = 5
June = 6
July = 7
August = 8
September = 9
October = 10
November = 11
December = 12
End Enum
有人对此有任何想法吗?
更新: 我不是要获取当前月份或给定日期的月份名称。我知道该怎么做。我只是想创建一个具有Month属性的类,并希望使用Enum来表示月份。由于这似乎是一个可以在其他地方使用的项目,我讨厌将Enum放入我的班级,而宁愿让它“定位”在与其直接相关的结构中,以便可以轻松找到它。 谢谢你的回复。我应该更清楚地了解我想做什么。
答案 0 :(得分:7)
您无法向现有类型添加属性。
但是,您可以添加将从整数转换为相应枚举值的extension method,或者只返回与月份对应的枚举值。
答案 1 :(得分:3)
扩展方法存根:
public static class DateTimeExtensions
{
public static string GetMonthName(this DateTime dateTime)
{
// add using System.Globalization;
return DateTimeFormatInfo.GetMonthName(dateTime.Month);
}
public static Months GetMonth(this DateTime dateTime)
{
return (Months)dateTime.GetMonthName();
}
}
用途:
DateTime mydate = dateTime.Now;
string month = mydate.GetMonthName();
Months name = mydate.GetMonth();
答案 2 :(得分:3)
你可以添加这样的扩展名:
public static class DateTimeExtension
{
public static Months GetMonth(this Date dt)
{
return (Months)dt.Month;
}
public static Months GetMonthStr(this Date dt)
{
return ((Months)dt.Month).ToString();
}
}