Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果我只知道对象的参数';建造师?_C#_.net_Json_Reflection_Serialization - Fatal编程技术网

C# 如果我只知道对象的参数';建造师?

C# 如果我只知道对象的参数';建造师?,c#,.net,json,reflection,serialization,C#,.net,Json,Reflection,Serialization,这就像是一个后续问题 基本上,我所做的是向某个用户公开某个UI上的某些字段 这些字段是基于给定对象构造函数的参数列表建立的。用户可以选择UI显示的对象,哦,我不知道,比如说从下拉列表中选择一个对象之类的 一旦填写完字段并由用户提交,我就知道了需要创建的对象类型,知道了它的构造函数使用的参数名和参数类型。我在服务器上得到一个JSON字符串(C#代码隐藏) 对象可能具有比构造函数公开的更多的属性(公共或私有) 如果JSON字符串不包含所有属性的数据,我还可以使用JavaScript或JSON反序列化

这就像是一个后续问题

基本上,我所做的是向某个用户公开某个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格式似乎不正确,这意味着我没有在客户端正确构建对象,因为属性设置不正确。