首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通用Cast xAttribute到bool

通用Cast xAttribute到bool
EN

Stack Overflow用户
提问于 2011-12-14 10:22:16
回答 1查看 1.3K关注 0票数 2

下面是我的代码,它的工作原理非常完美,除了一种情况:当我有一个xAttribute of bool,所以xAttribute.Value == 1。在这种情况下,Convert不适用于数字类型。

通常我只使用output = (bool) xAttribute,它可以工作;但是在这个方法中,我有一个泛型类型,所以我想按照output = (T) xAttribute的方式使用这个泛型类型。我该怎么做?

代码语言:javascript
复制
    public static bool TryGetValueFromAttribute<T>(
        this XElement element, 
        String attName, 
        out T output, 
        T defaultValue)
    {
        var xAttribute = element.Attribute(attName);
        if (xAttribute == null)
        {
            output = defaultValue;
            return false;
        }

        output = (T)Convert.ChangeType(xAttribute.Value, typeof(T));
        return true;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-15 16:38:01

我刚用了XmLConvert。是个简单的解决办法。它甚至适用于0和1。

问候

代码语言:javascript
复制
        public static bool TryGetValueFromAttribute<T>(this XElement element, String attName, out T output, T defaultValue)
    {
        var xAttribute = element.Attribute(attName);
        if (xAttribute == null)
        {
            output = defaultValue;
            return false;
        }

        if(typeof(T) == typeof(bool))
        {
            object value = XmlConvert.ToBoolean(xAttribute.Value);
            output = (T) value;

            return true;
        }

        output = (T)Convert.ChangeType(xAttribute.Value, typeof(T));
        return true;
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8502849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档