代替Activator.CreateInstance
来源:互联网 发布:windows使用linux命令 编辑:程序博客网 时间:2024/05/17 09:47
我发现通过反射快速创建一个有默认构造函数的对象是一种很快的方式。
public class DynamicInitializer { public static V NewInstance<V>() where V : class { return ObjectGenerator(typeof(V)) as V; } private static object ObjectGenerator(Type type) { var target = type.GetConstructor(Type.EmptyTypes); var dynamic = new DynamicMethod(string.Empty, type, new Type[0], target.DeclaringType); var il = dynamic.GetILGenerator(); il.DeclareLocal(target.DeclaringType); il.Emit(OpCodes.Newobj, target); il.Emit(OpCodes.Stloc_0); il.Emit(OpCodes.Ldloc_0); il.Emit(OpCodes.Ret); var method = (Func<object>)dynamic.CreateDelegate(typeof(Func<object>)); return method(); } public static object NewInstance(Type type) { return ObjectGenerator(type); } }
0 0
- 代替Activator.CreateInstance
- 用Activator .CreateInstance代替new实现类的实例化Assembly.CreateInstance()与Activator.CreateInstance()方法的区别
- 用Activator .CreateInstance代替new实现类的实例化
- 用Activator .CreateInstance代替new实现类的实例化
- 用Activator .CreateInstance代替new实现类的实例化
- Use System.Activator.CreateInstance
- Activator.CreateInstance(T) 方法
- Activator.CreateInstance(T) 方法
- C# Activator.CreateInstance()方法
- Activator.CreateInstance 方法
- 用Activator .CreateInstance
- 【C#】Activator.CreateInstance用法
- Assembly.CreateInstance()与Activator.CreateInstance()方法
- C# Activator.CreateInstance()方法使用
- C# Activator.CreateInstance()方法使用
- Assembly.CreateInstance()与Activator.CreateInstanc
- C#的Activator.CreateInstance方法
- Assembly.LoadFrom和Activator.CreateInstance
- 程序员面试题精选100题(04)-二元树中和为某一值的所有路径[数据结构]
- struts2.XML的常用配置
- 电线常识
- 黑马程序员—C语言笔记—指针
- android 蓝牙间串透传SPP协议使用
- 代替Activator.CreateInstance
- hdoj 5087 Revenge of LIS II 【第二长单调递增子序列】
- 关于微信支付
- js 字符串转换成数字的三种方法
- Android网络框架Volley(终极篇)
- Mac OSX下编译安装PostgreSQL
- Hibernate映射之实体映射<转载>
- 在Chrome上使用ActiveX控件
- Android访问网络,使用HttpURLConnection还是HttpClient?