[英]ERROR in C# API project after upgrading .NET framework from 4.0 to 4.6.1 in Visual Studio 2017
[英]C# Error in calendar after upgrading project .net target framework from 3.5 to 4.5
我具有日历的以下构建文化功能:
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
。
我们如何解决这些家伙?
在声明对象时,您可能想要使用全限定名,如下所示:
System.Globalization.Calendar originalCal = ci.Calendar;
或者,如果您知道没有使用System.Windows.Control.Calendar
类型,则可以using
以下命令using
Calendar
类型别名为System.Globalization
的类型:
using Calendar = System.Globalization.Calendar;
如果我理解正确,则可能要使用system.globalization.calendar
,因为您似乎正在使用日期格式。
system.windows.control.calendar
不包含日历数据 ,而是包含日历控件 -呈现为日历的图形。
为此,请删除任何引用system.windows.control.calendar
import
语句。
如果那是不可能的(如果您正在System.windows.control
下使用其他功能,那么Calendar
会隐式包含在内),然后为system.globalization
命名空间声明一个别名 :
using glob = System.Globalization;
这将glob
定义为名称空间System.Globalization
缩写,这将允许您如下引用正确的Calendar类:
var ci = new glob.CultureInfo(culture);
glob.Calendar myCal = ci.Calendar;
PS:如果愿意,您可以将其缩短得更多,但是就我个人而言,我认为任何比glob
短的内容都会使它的含义变得不清楚。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.