如何在不调用构造函数的情况下创建对象?

时间:2012-10-26 14:54:06

标签: c# .net reflection microsoft-metro

我想实现一些非标准的序列化格式。

当我进行反序列化时,我需要在不调用构造函数的情况下创建对象的实例。

有 在System.Runtime.Serialization.FormatterServices.GetUninitializedObject(Type type)框架中.NET但Windows Metro Framework中没有FormatterServices类。

是否有人知道如何在不调用Windows Metro Framework中的构造函数的情况下实例化对象?

2 个答案:

答案 0 :(得分:2)

据我所知:你做不到。您也无法调用私有/受保护/内部构造函数:.netcore具有受限制的反射(如Silverlight模型,但增加了GetTypeInfo()的痛苦。)

我可以建议的唯一选择是为用户提供的工厂方法提供单独的支持,该方法可以执行相应的操作,或者类似地传递工厂界面的能力。这使得构造远离序列化引擎,并将其置于对知道特定类型的代码的控制之下。

答案 1 :(得分:0)

我可能错了,但是当你实例化一个对象时,你必须至少运行一个构造函数。即使没有声明构造函数,也会调用默认的空构造函数。 Instanciation使一个类成为一个对象。

所以对我来说,你的问题没有答案。

如果需要,也许你可以在运行时构建一个默认的空构造函数。 Take a look here