FormatterServices.GetUninitializedObject()将创建实例而不调用构造函数。我通过使用Reflector并深入研究了一些核心.Net序列化类来找到此类。
我使用下面的示例代码对其进行了测试,看起来效果很好:
using System;using System.Reflection;using System.Runtime.Serialization;namespace NoConstructorThingy{ class Program { static void Main() { // does not call ctor var myClass = (MyClass)FormatterServices.GetUninitializedObject(typeof(MyClass)); Console.WriteLine(myClass.One); // writes "0", constructor not called Console.WriteLine(myClass.Two); // writes "0", field initializer not called } } public class MyClass { public MyClass() { Console.WriteLine("MyClass ctor called."); One = 1; } public int One { get; private set; } public readonly int Two = 2; }}http://d3j5vwomefv46c.cloudfront.net/photos/large/687556261.png



