繁体   English   中英

如何以正确的方式转换通用 TYPE?

[英]How to cast generic TYPE in right way?

我有这样的方法

        public TYPE GetParam<TYPE>(ICacheKey key)
        {
            var result = default(TYPE);

            if (typeof(TYPE) == typeof(string))
            {
                result = m_AppConfigCache.GetParamString(key.GroupName, key.Key);
            }
            else if (typeof(TYPE) == typeof(bool))
            {
                result = m_AppConfigCache.GetParamBool(key.GroupName, key.Key);
            }

            return result;
        }

所以,我检查类型是否是(例如)字符串,如果是,我必须调用一个方法,如果类型是 bool 那么另一个

这种方法

m_AppConfigCache.GetParamString(key.GroupName, key.Key)

返回字符串,但我收到一个错误,即 TYPE 不是字符串并且无法强制转换...

问题是——怎么做?

如果您首先将返回的对象转换为object ,然后转换为TYPE ,则可以编写这样的方法:

public TYPE GetParam<TYPE>(ICacheKey key)
{
    if (typeof(TYPE) == typeof(string))
    {
        return (TYPE)((object)m_AppConfigCache.GetParamString(key.GroupName, key.Key));
    }
    else if (typeof(TYPE) == typeof(bool))
    {
        return (TYPE)((object)m_AppConfigCache.GetParamBool(key.GroupName, key.Key));
    }

    return default(TYPE);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM