Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 当类型为TimeSpan时,尝试分析泛型类型时出错_.net_Vb.net_Parsing_Generics_Type Conversion - Fatal编程技术网

.net 当类型为TimeSpan时,尝试分析泛型类型时出错

.net 当类型为TimeSpan时,尝试分析泛型类型时出错,.net,vb.net,parsing,generics,type-conversion,.net,Vb.net,Parsing,Generics,Type Conversion,我使用以下代码尝试将字符串解析为泛型类型。在我使用的实例中,当我尝试解析到TimeSpan时,它失败了。输入字符串是“12:34”,使用TimeSpan.Parse可以很好地解析。但是我找不到实现的解决方案。Parse Public Function ParseGeneric(Of T)(ByVal stringValue As String) As T Return DirectCast(Convert.ChangeType(stringValue, GetType(T)), T) E

我使用以下代码尝试将字符串解析为泛型类型。在我使用的实例中,当我尝试解析到TimeSpan时,它失败了。输入字符串是
“12:34”
,使用
TimeSpan.Parse可以很好地解析。但是我找不到实现
的解决方案。Parse

Public Function ParseGeneric(Of T)(ByVal stringValue As String) As T
    Return DirectCast(Convert.ChangeType(stringValue, GetType(T)), T)
End Function
错误:从“System.String”到“System.TimeSpan”的强制转换无效。

如果您不介意使用一些C#,
类型描述符
/
类型转换器
可以帮助您:

static T ParseGeneric<T>(string stringValue)
{
    return (T)TypeDescriptor.GetConverter(typeof(T))
                 .ConvertFromString(stringValue);
}

谢谢马克,VB很好用。你能解释为什么timespan失败是因为日期工作正常吗?@MattWilko I归结起来就是IConvertible在每个时间段中是如何实现的
Public Function ParseGeneric(Of T)(ByVal stringValue As String) As T
    Return DirectCast(TypeDescriptor.GetConverter(GetType(T)) _
                .ConvertFromString(stringValue), T)
End Function