为了账号安全,请及时绑定邮箱和手机立即绑定

将项目 .net 目标框架从 3.5 升级到 4.5 后日历中的 C# 错误

将项目 .net 目标框架从 3.5 升级到 4.5 后日历中的 C# 错误

C#
回首忆惘然 2021-12-05 17:14:18
我有以下用于日历的 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它更短的东西都会让它的意思不那么清楚。


查看完整回答
反对 回复 2021-12-05
?
绝地无双

TA贡献1946条经验 获得超4个赞

在声明对象时,您可能希望使用完全限定名称,如下所示:

System.Globalization.Calendar originalCal = ci.Calendar;

或者,如果你知道你不使用的System.Windows.Control.Calendar类型,你可以别名类型Calendar的一个中System.Globalization有以下using

using Calendar = System.Globalization.Calendar;


查看完整回答
反对 回复 2021-12-05
  • 2 回答
  • 0 关注
  • 249 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信