我有
public bool AddParameter<T>(string pattern, SqlDbType parameterType, int length, T value)
{
}
我需要一个字符串的特殊情况,应该被截断(MS不会对我这样做,我不知道他们需要的是第一手的长度)。所以我尝试查询T是否为字符串,最终结果是
if(value is string) {
}
等待一些测试。现在我需要进行一些类型转换以在value
上执行字符串函数,因为
value = value.Substring(0,length);
不起作用。所以我试过了:
value = (T)(((string)value).Substring(0,length));
但是无法从T转换为字符串。我猜测value.ToString()会产生相同的结果,所以我再次尝试:
value = (T)((value.ToString()).Substring(0,length);
但也无法从字符串转换为T.有人可以帮我走出迷宫吗?
答案 0 :(得分:1)
双重演员应该做的伎俩
value = (T)(object)(value.ToString().Substring(0,length));
答案 1 :(得分:1)
如果已知T是字符串,为什么要使用泛型?你必须添加一个接受字符串的重载,在那里做你的逻辑并将结果传递给泛型AddParameter:
public bool AddParameter(string pattern, SqlDbType parameterType, int length, string value)
{
//do your stuff
return AddParameter<string>(pattern, parameterType, length, updatedValue);
}
public bool AddParameter<T>(string pattern, SqlDbType parameterType, int length, T value)
{
}