利用反射动态创建对象的几种方式

 

public static T GetModel(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;
        }

 

你可能感兴趣的:(利用反射动态创建对象的几种方式)