使用TypeDescriptor代替TryParse

时间:2009-07-14 23:26:35

标签: c# .net type-conversion casting tryparse

我正在尝试为通用类型复制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块。

干杯 安东尼

1 个答案:

答案 0 :(得分:2)

来自TypeConverter.IsValid的MSDN文档:

  

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

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

另见this Connect ticket