C# 自定义序列化-ISerializable和protected/private构造函数用于反序列化

C# 自定义序列化-ISerializable和protected/private构造函数用于反序列化,c#,constructor,deserialization,iserializable,C#,Constructor,Deserialization,Iserializable,我不明白它是如何工作的:当我实现ISerializable接口时,我必须定义protected(除非类是密封的,在这种情况下,构造函数应该标记为private)构造函数: 受保护的MyClass(SerializationInfo信息、StreamingContext上下文) 此访问修饰符使此构造函数对项目中的任何对象都不可用,因此反序列化如何成功?如果需要,CLR可以调用受保护/私有构造函数。你也可以用反射做同样的事情。通过-准备好你的头脑被炸开:)你是想告诉我,使用反射,我可以使用私有/受保

我不明白它是如何工作的:当我实现ISerializable接口时,我必须定义protected(除非类是密封的,在这种情况下,构造函数应该标记为private)构造函数:
受保护的MyClass(SerializationInfo信息、StreamingContext上下文)


此访问修饰符使此构造函数对项目中的任何对象都不可用,因此反序列化如何成功?

如果需要,CLR可以调用受保护/私有构造函数。你也可以用反射做同样的事情。通过-准备好你的头脑被炸开:)你是想告诉我,使用反射,我可以使用私有/受保护的构造函数来创建一个实现它们的类型的实例吗?@djf我很抱歉打扰你,但我对反射的熟悉程度和Andrew Troelsen用他的书教我的一样多(Pro C#5.0和NET 4.5框架)或者我只是错过了这个特别的用途。特罗尔森没有提到任何关于反序列化背后发生的事情。我很好奇,这就是为什么我要问的原因。谢谢你response@user2551229关键是构造函数是无参数的,而不是受保护的首先创建nstance,然后初始化其所有字段。请看一下这些相关问题,