键入从T到字符串以及从字符串到T的转换,其中T已知为字符串

时间:2014-09-09 12:25:01

标签: c# string type-conversion

我有

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.有人可以帮我走出迷宫吗?

2 个答案:

答案 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)
{
}