c# - 为什么我需要一个无参数的构造函数?

标签 c#

<分区>

Possible Duplicate:
Why XML-Serializable class need a parameterless constructor

我收到如下所述的运行时错误。

Message=OutlookAddIn1.DeviceRegistrationRequest cannot be serialized because it does not have a parameterless constructor.

我非常清楚为什么(在错误消息中说了)以及如何解决它(空构造函数的简单添加)。我不清楚的是为什么它是必需的。我发现 this discussion但它主要是关于 MVC,这与我的程序无关(它是 CRM Dynamics 的控制台客户端)。

最佳答案

您的类只需要一个无参数的构造函数,因为您正在使用的库(听起来像 XmlSerializer,可能是间接的)期望并使用该构造函数。这确实是一种创建对象的非常方便的方法,因为它允许:

object obj = Activator.CreateInstance(type);

用法。

但是!这不是所有序列化程序的固有需求:

  • 有些序列化程序不使用任何构造函数(还有另一种创建对象的方法,完全跳过构造函数步骤)
  • 有序列化程序允许您提供自己的工厂方法来创建新实例

关于c# - 为什么我需要一个无参数的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12561333/

相关文章:

c# - 遍历类的静态属性

c# - 将程序集声明从 C# 转换为 VB

C# 动态无法从基接口(interface)调用方法

c# - LINQ:根据另一个列表中元素上方的数学条件过滤列表

c# - 在运行时不是特定于版本的 Visual Studio 项目引用

c# - 如何解决 Hunspell Intel 32 位 DLL 未找到异常?

c# - is 和 typeof 哪个更快

c# - 如何实例化在 C# DLL 中声明的类?

c# - 如何在 Visual Studio 2008 中调试 *Invoke()

c# - Azure 媒体服务 - 生成新的 AES 加密 token 用于播放