使用 TypeDescriptor 代替 TryParse

发布于 2024-07-26 12:12:00 字数 719 浏览 8 评论 0原文

我正在尝试复制泛型类型的 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 块。

干杯 安东尼

I am trying to replicate TryParse for generic types and thought that TypeDescriptor might give me what I am after. So I came up with the following test case but it is failing, just wondering if anyone knows where I am going wrong.

    [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;
    }

Note, I don't want to use a try catch block.

Cheers
Anthony

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅唱ヾ落雨殇 2024-08-02 12:12:00

来自 TypeConverter.IsValid 的 MSDN 文档:

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

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

另请参阅此 Connect 票证

From MSDN documentation for TypeConverter.IsValid:

The IsValid method is used to validate a value within the type rather than to determine if value can be converted to the given type.

So it will only check the type of the value, not whether the value is correct input that can be parsed.

Also see this Connect ticket.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文