我想做一些通用函数来做一些操作,比如:
ConvertValue<T>(string value)
Run Code Online (Sandbox Code Playgroud)
如果T是,int则函数将值转换为int并返回结果.
同样,如果T是boolean,函数将转换value为boolean并返回它.
怎么写这个?
Bro*_*ass 187
像这样的东西?
public static T ConvertValue<T>(string value)
{
return (T)Convert.ChangeType(value, typeof(T));
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它:
int val = ConvertValue<int>("42");
Run Code Online (Sandbox Code Playgroud)
编辑:
您甚至可以更通用地执行此操作,而不依赖于string类型U实现的参数IConvertible- 这意味着您必须指定两个类型参数:
public static T ConvertValue<T,U>(U value) where U : IConvertible
{
return (T)Convert.ChangeType(value, typeof(T));
}
Run Code Online (Sandbox Code Playgroud)
我考虑过捕捉InvalidCastException可能引起的异常Convert.ChangeType()- 但在这种情况下你会得到什么?default(T)?让调用者处理异常似乎更合适.
虽然可能不像方法那样干净IConvertible,但您总是可以使用简单的检查typeof(T)来返回T:
public static T ReturnType<T>(string stringValue)
{
if (typeof(T) == typeof(int))
return (T)(object)1;
else if (typeof(T) == typeof(FooBar))
return (T)(object)new FooBar(stringValue);
else
return default(T);
}
public class FooBar
{
public FooBar(string something)
{}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
101505 次 |
| 最近记录: |