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 に答える