加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用泛型返回扩展方法

发布时间:2020-12-15 18:14:29 所属栏目:百科 来源:网络整理
导读:是否可以使用 extension methods返回 generic类型? 例如,我有以下方法: // Convenience method to obtain a field within a row (as a double type) public static double GetDouble(this DataRow row,string field) { if (row != null row.Table.Columns.
是否可以使用 extension methods返回 generic类型?

例如,我有以下方法:

// Convenience method to obtain a field within a row (as a double type) 
public static double GetDouble(this DataRow row,string field) {
    if (row != null && row.Table.Columns.Contains(field))
    {
        object value = row[field];
        if (value != null && value != DBNull.Value)
            return Convert.ToDouble(value);
    }
    return 0;
}

目前使用如下:

double value = row.GetDouble("tangible-equity");

但我想使用以下代码:

double value = row.Get<double>("tangible-equity");

这是可能的,如果是这样,该方法会是什么样的?

解决方法

这个怎么样:
public static T Get<T>(this DataRow row,string field) where T: IConvertible 
    {
        if (row != null && row.Table.Columns.Contains(field))
        {
            object value = row[field];
            if (value != null && value != DBNull.Value)
                return (T)Convert.ChangeType(value,typeof(T));
        }
        return default(T);
    }

与仅仅进行转换相比,Convert.ChangeType处理转换更加灵活.这几乎反映了您的原始代码,只是通用的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读