我是一个有用的助手,可以为您翻译文本。
我有一个类,用于保存从配置文件中加载的值。为了让这个类更易于使用,我设置了许多隐式转换到一些基本类型的方法。
其中一个我想要转换的类型是IEnumerable(T)。例如,如果程序员在配置文件中有以下值:
理想情况下,我想要写成这样。
我有一个类,用于保存从配置文件中加载的值。为了让这个类更易于使用,我设置了许多隐式转换到一些基本类型的方法。
其中一个我想要转换的类型是IEnumerable(T)。例如,如果程序员在配置文件中有以下值:
a = "1,2,3,4"
在C#代码中,他可以编写
IEnumerable<int> a = Config.a;
理想情况下,我想要写成这样。
public static implicit operator IEnumerable<T>(ConfigurationValue val)
{
string value = val;
string[] parts = value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
List<T> convertedTypes = new List<T>();
foreach (string part in parts)
{
T converted = Convert.ChangeType(part.Trim(), typeof(T));
convertedTypes.Add(converted);
}
return convertedTypes;
}
但是这样会给我带来语法错误,提示 T 未定义。是否没有办法定义这样的转换,还是有特殊的语法?
另外,记录一下,我正在使用 .Net Framework 4.0 中的C# 4.0。