C# 如果我只知道对象的参数';建造师?
这就像是一个后续问题 基本上,我所做的是向某个用户公开某个UI上的某些字段 这些字段是基于给定对象构造函数的参数列表建立的。用户可以选择UI显示的对象,哦,我不知道,比如说从下拉列表中选择一个对象之类的 一旦填写完字段并由用户提交,我就知道了需要创建的对象类型,知道了它的构造函数使用的参数名和参数类型。我在服务器上得到一个JSON字符串(C#代码隐藏) 对象可能具有比构造函数公开的更多的属性(公共或私有) 如果JSON字符串不包含所有属性的数据,我还可以使用JavaScript或JSON反序列化来获取对象吗 我不确定是否可以通过属性或其他方式指定默认值C# 如果我只知道对象的参数';建造师?,c#,.net,json,reflection,serialization,C#,.net,Json,Reflection,Serialization,这就像是一个后续问题 基本上,我所做的是向某个用户公开某个UI上的某些字段 这些字段是基于给定对象构造函数的参数列表建立的。用户可以选择UI显示的对象,哦,我不知道,比如说从下拉列表中选择一个对象之类的 一旦填写完字段并由用户提交,我就知道了需要创建的对象类型,知道了它的构造函数使用的参数名和参数类型。我在服务器上得到一个JSON字符串(C#代码隐藏) 对象可能具有比构造函数公开的更多的属性(公共或私有) 如果JSON字符串不包含所有属性的数据,我还可以使用JavaScript或JSON反序列化
谢谢。在填充对象时,DataContract反序列化程序根本不使用类型的构造函数。它实际上使用字段/setters/getter填充对象。此外,如果您不为某些属性提供值,它们将初始化为默认值,除非您连接DataContract事件,如OnDeserialize、OnDeserialize等。因此,例如,如果类型有一个名为FirstName of type string的属性(显然),而json没有为FirstName定义任何内容,反序列化时,默认值将为null,因为您没有提供此字段。在填充对象时,DataContract反序列化程序根本不使用类型的构造函数。它实际上使用字段/setters/getter填充对象。此外,如果您不为某些属性提供值,它们将初始化为默认值,除非您连接DataContract事件,如OnDeserialize、OnDeserialize等。因此,例如,如果类型有一个名为FirstName of type string的属性(显然),而json没有为FirstName定义任何内容,反序列化时,由于未提供此字段,默认值将为null。支持通过参数化构造函数创建类型,前提是只有一个构造函数,且参数名称与JSON对象上的属性名称匹配。支持通过提供的参数化构造函数创建类型只有一个构造函数,参数名与JSON对象上的属性名匹配。我正在尝试DataContractJsonSerializer。我试图反序列化的对象派生自一个类,该类派生自一个类。我必须确保它所扩展的类也具有DataContract属性。我现在可以得到一个对象了……但我的JSON格式似乎不正确,这意味着我没有在客户端正确构建对象,因为属性设置不正确。我正在尝试DataContractJsonSerializer。我试图反序列化的对象派生自一个类,该类派生自一个类。我必须确保它所扩展的类也具有DataContract属性。我现在可以得到一个对象了……但我的JSON格式似乎不正确,这意味着我没有在客户端正确构建对象,因为属性设置不正确。