2012-07-09 54 views
3

我用这个代码来改变我的文化.NET3.5到persianculture:System.Globalization.DateTimeFormatInfo.calendar原因抛出一个异常

if (CultureInfo.CurrentCulture.ToString() == "fa-IR") 
     { 
      CultureInfo persianCalture = new CultureInfo("fa-IR"); 
      DateTimeFormatInfo info = persianCalture.DateTimeFormat; 
      info.AbbreviatedDayNames = new string[] { "  ی  ", "  د  ", "  س  ", "  چ  ", "  پ  ", "  ج  ", "  ش  " }; 
      info.DayNames = new string[] { "يکشنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" }; 
      info.AbbreviatedMonthNames = new string[] { "فروردين", "ارديبهشت", "خرداد", "تير", "مرداد", "شهريور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" }; 
      info.MonthNames = new string[] { "فروردين", "ارديبهشت", "خرداد", "تير", "مرداد", "شهريور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" }; 
      info.AbbreviatedMonthGenitiveNames = new string[] { "فروردين", "ارديبهشت", "خرداد", "تير", "مرداد", "شهريور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" }; 
      info.AMDesignator = "صبح"; 
      info.PMDesignator = "عصر"; 
      info.ShortDatePattern = "yyyy/MM/dd"; 
      info.FullDateTimePattern = "yyyy/MM/dd hh:mm:ss"; 
      info.LongDatePattern = "yyyy MMMM dd dddd"; 
      info.FirstDayOfWeek = DayOfWeek.Saturday; 
      persianCalture.DateTimeFormat = info; 
      PersianCalendar PersianCal = new PersianCalendar(); 

      typeof(DateTimeFormatInfo).GetField("calendar", (System.Reflection.BindingFlags.NonPublic | (System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))).SetValue(info, PersianCal); 
      typeof(CultureInfo).GetField("calendar", (System.Reflection.BindingFlags.NonPublic | (System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))).SetValue(persianCalture, PersianCal); 
      Thread.CurrentThread.CurrentCulture = persianCalture; 
      Thread.CurrentThread.CurrentUICulture = persianCalture; 
      CultureInfo.CurrentCulture.DateTimeFormat = info; 
      CultureInfo.CurrentUICulture.DateTimeFormat = info; 
     } 

但低于线是抛出一个ArgumentNullException:

系统.Globalization.DateTimeFormatInfo.calendar

 typeof(DateTimeFormatInfo).GetField("calendar", (System.Reflection.BindingFlags.NonPublic | (System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))).SetValue(info, PersianCal); 
     typeof(CultureInfo).GetField("calendar", (System.Reflection.BindingFlags.NonPublic | (System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))).SetValue(persianCalture, PersianCal); 

有谁知道为什么这个异常抛出?

感谢您提供的任何帮助。

回答

0

尝试使用:typeof(DateTimeFormatInfo).GetProperty("Calendar"....)

的DateTimeFormatInfo具有日历属性(首都C)。

希望这有助于

晒。

+0

这并不能解决我的问题:( – atabrizi 2012-07-14 06:39:02