利用泛型和反射实现idatareader转实体

思明 思明     2022-10-16     314

关键词:

public static T ReaderToModel<T>(IDataReader row)
        {
            // 1、使用与指定参数匹配最高的构造函数,来创建指定类型的实例
            Type modelType = typeof(HShopingCarModel);
            T model = Activator.CreateInstance<T>();
            for (int i = 0; i < row.FieldCount; i++)
            {
                // 2、判断字段值是否为空或不存在的值
                if (!(row[i] == null || row[i] is DBNull))
                {
                    // 3、匹配字段名
                    PropertyInfo pi = modelType.GetProperty(row.GetName(i), BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase);
                    if (pi != null)
                    {
                        // 4、绑定实体对象中同名的字段 
                        pi.SetValue(model, CheckType(row[i], pi.PropertyType), null);
                    }
                }
            }

            return model;
        }

        /// <summary>
        /// 对可空类型进行判断转换(*要不然会报错)
        /// </summary>
        /// <param name="value">DataReader字段的值</param>
        /// <param name="conversionType">该字段的类型</param>
        /// <returns></returns>
        private static object CheckType(object value, Type conversionType)
        {
            if (conversionType.IsGenericType && conversionType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
            {
                if (value == null)
                    return null;
                System.ComponentModel.NullableConverter nullableConverter = new System.ComponentModel.NullableConverter(conversionType);
                conversionType = nullableConverter.UnderlyingType;
            }
            return Convert.ChangeType(value, conversionType);
        }

 

转利用java反射实现两个具有相同属性bean赋值

packagecom.dobn.bdgcgl.utils;importjava.lang.reflect.Field;importjava.lang.reflect.Method;publicclassClassReflection{/***@paramclass1用于赋值的实体类*@paramclass1需要待赋值的实体类*@authorym*@CreateTime2012-11-22下午03: 查看详情

泛型和泛型集合

...过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls; 查看详情

把实体类转成xml让list的最外层标签失效

...,或将xml文件转换成一组实体类.题目不难,但写完感觉可以利用泛型和反射将任意一个实体类和xml文件进行转换.于是今天下午立马动手试了下,做了个简...利用JAXB实现java实体类和xml互相转换1.应用场景在使用WebService实现数据上传... 查看详情

通用持久层如何设计

...:基本的增删改查等操作。1.通用持久层如何设计,基于泛型和反射1.1通用持久层,意味着多个实体类都可以用的持久层,那么我们只能用泛型来定义数据类型1.2泛型来定义数据类型,我们需要通过传递过来的泛型创建出我们正... 查看详情

c#用反射实现两个类的对象之间相同属性的值的复制

...写很多行复制语句,麻烦还容易漏掉一些,这个时候可以利用c#的反射来实现复制。我们可以写这样一个利用泛型的映射函数。1.适用于创建实体的时候从一个实体作为数据源赋值///<summary>/ 查看详情

erp中反射的两个实例

...母版页中访问内容页的属性和方法。实例二:利用反射将IDataReader对象转化为实体类。 GPS平台、网站建设、软件开发、系统运维,找森大网络 查看详情

java筑基.泛型,反射,注解-利用注解加反射练习(代码片段)

文章目录泛型:泛型类泛型方法泛型接口子类明确泛型类的类型参数变量子类不明确泛型类的类型参数变量限定类型变量通配符泛型注解元注解注解的应用场景反射:注解+反射练习泛型:把类型明确的工作推迟到创建对象或调用... 查看详情

[转]c#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值

本文来自:http://www.cnblogs.com/mrchenzh/archive/2010/05/31/1747937.html/******************************************说明:利用反射将数据库查询的内容自动绑定*      到实体类**时间:1:492009-9-19**程序员:王文壮* 查看详情

简单实体类和xml文件的相互转换

...将xml文件转换成一组实体类。题目不难,但写完感觉可以利用泛型和反射将任意一个实体类和xml文件进行转换。于是今天下午立马动手试了下,做了个简单的模型,可以将简单的实体类和xml文件进行相互转换,但对实体类的属性... 查看详情

Java 泛型和可变参数

】Java泛型和可变参数【英文标题】:Javagenericsandvarargs【发布时间】:2010-06-2220:04:36【问题描述】:我想用泛型和可变参数实现一个函数。publicclassQuestionpublicstatic<A>voiddoNastyThingsToClasses(Class<A>parent,Class<?extendsA>...class... 查看详情

利用反射获取泛型(代码片段)

packagecom.duchong.aar.reflect.T;importjava.lang.reflect.Method;importjava.lang.reflect.ParameterizedType;importjava.lang.reflect.Type;importjava.util.List;importjava.util.Map;publicclassDemoTpublicv 查看详情

C# - IDataReader 到使用泛型的对象映射

】C#-IDataReader到使用泛型的对象映射【英文标题】:C#-IDataReadertoObjectmappingusinggenerics【发布时间】:2009-07-0918:00:57【问题描述】:如何使用泛型将DataReader对象映射到类对象?例如我需要做以下事情:publicclassMapper<T>publicstaticL... 查看详情

泛型反射常见应用,通过类型创建实例,通过反射实现增删改查

...方法跟字段就可以了  微信官方创建实体的方法,通过泛型类型创建实例System.Activator.CreateInstance<T>();新增:publicstaticvoidAdd<T>(Tmodel)Typet=typeof(T);stringTableName=GetTableName(t);PropertyInfo[]pps=t.GetProperties();StringBuildersb=newStringBuilde... 查看详情

使用 Java 泛型为实体实现转换器

】使用Java泛型为实体实现转换器【英文标题】:ImplementconvertersforentitieswithJavaGenerics【发布时间】:2013-06-2422:44:31【问题描述】:我正在使用Spring和Hibernate开发JSF项目,其中有许多遵循相同模式的Converters:getAsObject接收对象id的... 查看详情

利用反射机制实现对象转map集合(代码片段)

分析问题问题主要有以下几点如何获取对象中的属性的名称?如何获取对象的属性值?如何这个属性被private修饰,该如何处理?返回的是一个对象该如何获取对象的属性参数呢?解决问题问题1:可以使用反射来获取POJO对象的get方法... 查看详情

Swift 泛型和协议扩展

】Swift泛型和协议扩展【英文标题】:SwiftGenericsandProtocolExtensions【发布时间】:2015-09-2019:57:01【问题描述】:我有一个协议Reusable,它有一个静态函数staticfuncreuseId()-&gt;String和一个定义函数默认实现的协议扩展。然后,我在UIT... 查看详情

kotlin小知识之泛型和委托(代码片段)

文章目录泛型和委托泛型的基本用法类委托和委托属性类委托委托属性实现一个自己的lazy函数泛型和委托泛型的基本用法Kotlin当中的泛型机制和Java当中的泛型机制还是有异同的所谓泛型就是说在一般的编程模式下面,我们需要给... 查看详情

npoi2.3+泛型+反射根据配置统一解析excel数据到实体的基础方法

解析方法:///<summary>///excel数据解析到实体///</summary>///<typeparamname="T">实体类型</typeparam>///<paramname="sheet">npoi读取到的excel工作表,需要解析的工作表</param>///<paramname="startRow 查看详情