我想实现一些非标准的序列化格式。
当我进行反序列化时,我需要在不调用构造函数的情况下创建对象的实例。
框架中有
System.Runtime.Serialization.FormatterServices.GetUninitializedObject(Type type)
,.NET
但 Windows Metro 框架中没有FormatterServices
类。
有没有人知道如何在不调用 Windows Metro Framework 中的构造函数的情况下实例化对象?
我想实现一些非标准的序列化格式。
当我进行反序列化时,我需要在不调用构造函数的情况下创建对象的实例。
框架中有
System.Runtime.Serialization.FormatterServices.GetUninitializedObject(Type type)
,.NET
但 Windows Metro 框架中没有FormatterServices
类。
有没有人知道如何在不调用 Windows Metro Framework 中的构造函数的情况下实例化对象?
据我所知:你不能。您也不能调用私有/受保护/内部构造函数:.netcore 具有受限反射(如 Silverlight 模型,但增加了 GetTypeInfo() 的痛苦)。
我可以建议的唯一选择可能是为用户提供的执行适当操作的工厂方法提供单独的支持,或者类似地提供传入工厂接口的能力。这将构造从序列化引擎中移开,并使其重新控制了解特定类型的代码。
我可能是错的,但是当你实例化一个对象时,你至少必须运行一个构造函数。即使没有声明构造函数,也会调用默认的空构造函数。实例化使类成为对象。
所以对我来说,你的问题没有答案。
如果需要,也许您可以在运行时构建一个默认的空构造函数。看看这里