我有以下用于日历的 buildculture 功能:private void buildCulture(string culture, string calendarType){ CultureInfo ci=null; try { if (string.IsNullOrEmpty(culture)) { ci = System.Threading.Thread.CurrentThread.CurrentCulture; } else { try { ci = new CultureInfo(culture); } catch (System.ArgumentException) { ci = System.Threading.Thread.CurrentThread.CurrentCulture; } } // Calendar is from system.windows.control.calendar, // ci is from system.globalization.calendar: Calendar originalCal = ci.Calendar; if (!string.IsNullOrEmpty(culture) || originalCal.ToString().Replace("System.Globalization.", "") != culture) { foreach (Calendar supportCal in ci.OptionalCalendars) { if (calendarType == supportCal.ToString().Replace("System.Globalization.", "")) { ci.DateTimeFormat.Calendar = supportCal; } } } }}此功能在 .net 3.5 版中仍然有效。但是在我升级到 .net 4.5 后,出现以下行的错误Calendar originalCal = ci.Calendar:Calendar is an ambiguous reference between system.windows.control.calendar and system globalization.calendar.我们如何解决这些家伙?
2 回答
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
如果我理解正确,system.globalization.calendar
这可能是您想要使用的,因为您似乎正在使用日期格式。
system.windows.control.calendar
不包含日历数据,而是一个日历控件- 呈现为日历的图形。
为此,请删除任何import
引用system.windows.control.calendar
.
如果这是不可能的(如果您在 下使用其他内容System.windows.control
,因此Calendar
会被隐式包含),则为命名空间声明一个别名system.globalization
:
using glob = System.Globalization;
这定义glob
为 namespace 的缩写System.Globalization
,这将允许您引用正确的 Calendar 类,如下所示:
var ci = new glob.CultureInfo(culture); glob.Calendar myCal = ci.Calendar;
PS:如果你愿意,你可以把它缩短得更短,但就个人而言,我认为任何比glob
它更短的东西都会让它的意思不那么清楚。
绝地无双
TA贡献1946条经验 获得超4个赞
在声明对象时,您可能希望使用完全限定名称,如下所示:
System.Globalization.Calendar originalCal = ci.Calendar;
或者,如果你知道你不使用的System.Windows.Control.Calendar
类型,你可以别名类型Calendar
的一个中System.Globalization
有以下using
:
using Calendar = System.Globalization.Calendar;
- 2 回答
- 0 关注
- 278 浏览
添加回答
举报
0/150
提交
取消