1

我正在尝试为泛型类型复制 TryParse,并认为 TypeDescriptor 可能会给我我想要的东西。所以我想出了以下测试用例,但它失败了,只是想知道是否有人知道我哪里出错了。

    [TestMethod]
    public void Test()
    {
        string value = "Test";
        Guid resultValue;
        var result = this.TryConvert(value, out resultValue); 
    } 

    public bool TryConvert<T>(string value, out T resultValue)
    { 
        var converter = System.ComponentModel.TypeDescriptor.GetConverter(typeof(T));
        if (converter.IsValid(value))
        {
            resultValue = (T)converter.ConvertFrom(value);
            return true;
        }
        resultValue = default(T);
        return false;
    }

注意,我不想使用 try catch 块。

干杯安东尼

4

1 回答 1

2

来自 MSDN 文档TypeConverter.IsValid

IsValid方法用于验证类型中的值,而不是确定值是否可以转换为给定类型。

所以它只会检查值的类型,而不是值是否是可以解析的正确输入。

另请参阅此 Connect 票证

于 2009-07-14T23:40:21.180 回答