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