代码的目的是允许我推翻系统全球化的几个月的翻译,因为我无法获得伊斯兰月的直接翻译。元组列表Ext允许我使用清晰的语法存储外来月的短名称和长名称。
我的元组列表扩展类:
using System;
using System.Collections.Generic;
namespace Business.Extensions
{
public static class TupleListExt
{
public static void Add<T1, T2>(this IList<Tuple<T1, T2>> list,
T1 item1, T2 item2)
{
list.Add(Tuple.Create(item1, item2));
}
}
}使用此扩展:
using System;
using System.Collections.Generic;
using Business.Extensions;
public List<Tuple<string, string>> Months
{
get
{
return new List<Tuple<string, string>>{
{"",""}, // 0 index
{"يناير", "يناير"}, //January, Jan
{"فبراير", "فبراير"}, //Feb
{"مارس", "مارس"}, // Mar
{"إبريل", "إبريل"}, //April
{"مايو", "مايو"}, // May
{"يونيو", "يونيو"}, //June
{"يوليو", "يوليو"}, //July
{"أغسطس", "أغسطس"}, //Aug
{"سبتمبر", "سبتمبر"}, //Sept
{"أكتوبر", "أكتوبر"}, //Oct
{"نوفمبر", "نوفمبر"}, //Nov
{"ديسمبر", "ديسمبر"}, //Dec
};
}
}这在Visual 2015中非常有用,而且代码在生产中可以正常工作,但是我有其他开发人员使用VS 2013与我一起工作,而且它无法在此错误的情况下构建:
方法'Add‘没有过载,只需2个参数
经过2015年的建设,2013年的建设似乎还不错,但当我再次触摸文件时,它就会破裂。
我假设这与解析名称空间扩展类型Add有关,但我对C#还不熟悉,还被困住了!
发布于 2016-01-04 17:45:31
您的代码片段使用了VS 2013中没有的C# 6特性。也就是说,它依赖于对C#编译器的修正,即 from collection initializers
当我们第一次在C#中实现集合初始化时,被调用的
Add方法不能是扩展方法。VB从一开始就得到了它,但是我们似乎在C#中忘记了它。这一点已经解决了:从集合初始化器生成的代码现在将愉快地调用一个名为Add的扩展方法。它并不是一个很好的特性,但它偶尔会很有用,结果在新编译器中实现了它,相当于删除了阻止它的检查。
不幸的是,解决这个问题的方法是在初始化器中显式调用Tuple.Create。
https://stackoverflow.com/questions/34596613
复制相似问题