Могу ли я добавить перечисление в существующую структуру .NET, например Date? - PullRequest
3 голосов
/ 26 октября 2011

Так что, очевидно, у Microsoft нет перечисления месяцев в их структуре Date.
Интересно, возможно ли создать перечисление и прикрепить его к структуре 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 в свой класс и предпочел бы, чтобы он был «расположен» в структуре, с которой он непосредственно связан, чтобы его можно было легко найти.Спасибо за все ответы.Я должен был быть более ясным в отношении того, что я хотел сделать.

Ответы [ 3 ]

7 голосов
/ 26 октября 2011

Вы не можете добавить свойства к существующему типу, подобному этому.

Однако вы можете добавить метод расширения , который будет преобразовывать целые числа в соответствующее значение Enum, или просто вернуть значение enum, соответствующее месяцу.

3 голосов
/ 26 октября 2011

Вы можете добавить расширение как это:

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();
    }
}
3 голосов
/ 26 октября 2011

Заглушка метода расширения:

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();
...