我们已经创建了一个通用的方法:
public TReturnType GetValue(string key) { var configurationParameter = (from cp in _repository.ConfigurationParameters where cp.ConfigurationParameterKey == key select cp).FirstOrDefault(); var returnValue (TReturnType)Convert.ChangeType(configurationParameter.ConfigurationParameterValue, typeof (TReturnType)); return returnValue; }
现在,我们想在此方法中进行一些错误处理,以便在我们期望数字类型的情况下,我们可以做,例如,int.TryParse(returnValue,out myNewInt)。当然,为了能够做到这一点,我们必须能够确定方法中TReturnType的类型。
有办法做到这一点吗?
感谢您的所有帮助。 问候。
答案 0 :(得分:3)
当然可以,但你应该考虑这是不是一个好主意。你总是可以说
if (typeof(T) == typeof(int)) whatever
但这样做有点代码味道不好。泛型的全部意义在于是通用的。如果你有T是一个整数的专用代码,那么为什么不简单地添加另一个处理整数情况的方法?
答案 1 :(得分:2)
当然,只需添加一些代码:
if(typeof(TReturnType) == typeof(int))
{
var number = (int)returnValue;
//Validate your output
}