利用反射动态创建类型的三种方式

旧时模样 提交于 2019-12-06 09:56:28

 

public static T GetModel<T>(T oModel)
        {
            var model = default(T) ;
            
            //创建对象方法一:使用构造函数创建
            model = (T)typeof(T).GetConstructor(new System.Type[] { }).Invoke(new object[] { });//反射得到泛型类的实体

            //创建对象方法二:使用Activator
            model = (T)Activator.CreateInstance(typeof(T));

            //创建对象方法三:使用Activator创建泛型类型对象
         //T类型本身也是个泛型类型,需要先获取泛型类型,再通过泛型类型的Type创建对象            
        var newType = typeof(T).MakeGenericType(typeof(int),typeof(string));
       model = (T)Activator.CreateInstance(newType);

            return model;
        }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!