C#性能优化黑科技(二)【反射】批量实例化对象的快速方法

在实际开发中,我们有时候会遇到这样的问题,我们知道某一个类的Type,如何实例化这个对象?

答案很简单:

object obj = Activator.CreateInstance(type);

但是如果是需要批量实例化对象(例如读取自定义格式的配置文件),这种方法在效率和GC上都不太理想。(Mono2.0)

我注意到System.Object有一个方法,叫做MemberwiseClone,但是它是protected的,也就是只有衍生类在内部才能访问。那我们只有用反射把它拿出来:

object obj = Activator.CreateInstance(type);
MethodInfo mcMi = type.GetMethod("MemberwiseClone", BindingFlags.NonPublic | BindingFlags.Instance);
List list = new List(100);
for (int i = 0; i < 100; i++)
{
    list.Add(mcMi.Invoke(obj, null));
}






你可能感兴趣的:(C#,C#性能优化黑科技,C#,.Net,CreateDelegate,Reflection,性能优化)