4

我有以下代码用于尝试将字符串解析为泛型类型。在我使用它的实例中,当我尝试解析为 TimeSpan 时它会失败。输入字符串可以"12:34"很好地解析,TimeSpan.Parse但我找不到实现的解决方案<Generic>.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”的无效转换。

4

1 回答 1

4

如果你会原谅一些 C#,TypeDescriptor/TypeConverter可以在这里提供帮助:

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

如果我不得不猜测(完全未经测试)VB:

Public Function ParseGeneric(Of T)(ByVal stringValue As String) As T
    Return DirectCast(TypeDescriptor.GetConverter(GetType(T)) _
                .ConvertFromString(stringValue), T)
End Function
于 2012-08-15T10:02:22.947 回答