使用C#,在泛型中,因为不使用值类型(如int),想要一个所有数据类型的扩展方法,如:int,long,string.conversion方法是下面的
public static T Translate<T>(this T inputNumber) where T : class
{
return inputNumber.ToString()
.Replace("1", "1")
.Replace("2", "2")
.Replace("3", "3")
.Replace("4", "4")
.Replace("5", "5")
.Replace("6", "6")
.Replace("7", "7")
.Replace("8", "8")
.Replace("9", "9")
.Replace("0", "0") as T;
}
var result= 2.Translate<longTypeData>();
在结果变量中需要长类型数据。
答案 0 :(得分:0)
目前还不是很清楚你要做什么。但是如果你想让这个函数用作某种转换器,我会在:
中传递两个泛型类型的参数public static T Translate<Q, T>(this Q inputNumber) {
string value = TypeDescriptor.GetConverter(typeof(Q)).ConvertToString(inputNumber);
string replacedValue = value.ToString()
.Replace("1", "1")
.Replace("2", "2")
.Replace("3", "3")
.Replace("4", "4")
.Replace("5", "5")
.Replace("6", "6")
.Replace("7", "7")
.Replace("8", "8")
.Replace("9", "9")
.Replace("0", "0");
return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(replacedValue);
}
稍后您可以像这样使用它:
int result = "444".Translate<string, int>();
但请记住:传递无效的类型组合会产生异常!