【ASP.NET】DataContract序列化,反序列化对象中包含用接口声明的属性时的处理方法

为此对象添加KnownType属性(Attribute)。类型为用接口声明的属性(Property)的所有可能类型。

示例如下:

 1     public interface IKey
 2     {
 3         [DataMember]
 4         int Id { get; set; }
 5
 6         [DataMember]
 7         string Name { get; set; }
 8     }
 9
10     [DataContract]
11     public abstract class KeyBase : IKey
12     {
13         [DataMember]
14         public int Id { get; set; }
15
16         [DataMember]
17         public string Name { get; set; }
18     }
19
20     [DataContract]
21     public class Key : KeyBase
22     {
23         [DataMember]
24         public int Age { get; set; }
25     }
26
27     [KnownType(typeof(KeyBase))]
28     [KnownType(typeof(Key))]
29     [DataContract]
30     public class Data
31     {
32         [DataMember]
33         public IKey Key { get; set; }
34
35         [DataMember]
36         public string Message { get; set; }
37     }

时间: 2024-10-10 16:40:26

【ASP.NET】DataContract序列化,反序列化对象中包含用接口声明的属性时的处理方法的相关文章

一个类在另一个类中以集合形式声明为属性时应该注意的问题

标题:一个类在另一个类中以集合形式声明为属性时应该注意的问题,先解释一下,看下面的代码吧 [Serializable] public class MO_T_sj_quest { public List<MO_T_sj_answer> AnswerList { get; set; } public List<MO_T_sj_answer> IDList { get; set; } public List<MO_T_sj_quest_bind> BindList { get

将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)

表单序列化类型的数据是指url传递的数据的格式,形如"key=value&key=value&key=value"这样的key/value的键值对.一般来说使用jQuery的$.fn.serialize函数能达到这样的效果.如何将这样的格式转化为对象? 我们知道使用jQuery的$.fn.serializeArray函数得到的是一个如下结构的对象 [ { name: "startTime" value: "2015-12-02 00:00:

需要向后台传递一个对象数据,但对象中包含数组,结果请求报错,500

一.背景,由于前后端交互经验匮乏,今天遇到了一个问题.发送一个对象给后端,对象中包含了一个数组,然后请求失败了... 1.提交前,打印出要提交的数据,如图: 2.然后,查看了控制台, 发现 "message"中的报错信息, 不能识别的属性 'agentAreas[0][areaId]',  但是我记得,对象中,我没有传这么奇怪的 键名啊. 3.于是,我继续查找,无意中,在 “Headers”中,最底部,查看到这样的数据, 如下图: ,出现这样的情况,那应该就是我 传入的数据有问题. 4

SpringBoot接收对象中包含时间参数,格式化接收时间

SpringBoot接收对象中包含时间参数,前端传过来的时间数据为'2019-12-19 08:08:08',SpringBoot不能自己转化时间为Date,会报错. 解决办法: 使用@JsonFormat注解 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 原文地址:https://www.cnblogs.com/mxh-java/p/12070539.html

使用angularjs中ngRepeat的$even与$odd属性时的注意事项

JavaScript中数组的索引是从0开始的,因此我们再取奇偶的时候需要用!$even和!$odd来将$even和$odd的布尔值反转 下面给出一个实例: 使用$odd和$even来制作一个红蓝相间的列表 <!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <meta charset="utf-8"> <title>ng-rep

queryRuner如何获得bean对象,当这个bean对象中包含其他对象的时候

我们知道我们可以使用dbutil的QueryRunner下的query方法使用BeanHandler得到bean对象 但是,当我们在一个表和另一个表关联的时候,往往喜欢将另一个表的关联字段变成另一个bean的对象,那么BeanHandler就无法为该对象赋值了. 怎么解决呢? 使用MapHandler,得到所有结果的map,然后再map中提取出两个对象,并且将副对象赋值给主对象为属性. 原理我还是不太清楚.如果有谁看到了欢迎给我解惑下,谢谢.

C# json对象中包含数组对象时,如何存入数据库

前端创建的的对象例如: C#端这样将数组提取出来存入 原文地址:https://www.cnblogs.com/sangzs/p/11558595.html

Mathematica 中 Minimize函数无法找到全局最小值时的解决方法

一直使用Minimize来找到指定约束下的函数的最小值,最近发现在一个非线性函数中使用Minimize无法提供一个"全局"最小值(使用Mathematica只是用来验证算法的,所以无论用什么方法,只希望能找到全局最小值,而不管其效率).最终在帮助文档中发现如下说明: 另外找到NMinimize函数,发现其有更仔细的说明: 根据说明,如果函数f是非线性的,很可能获得一个局部最小值,但是该方法有选项可以设置: 在这里将Method设置为一个其他值可能会得到全局最优解. 在此记录.

C/CPP系类知识 What happens when a function is called before its declaration in C? 在C中当使用没有声明的函数时将发生什么

http://www.geeksforgeeks.org/g-fact-95/ 1 在C语言中,如果函数在声明之前被调用,那么编译器假设函数的返回值的类型为INT型, 所以下面的code将无法通过编译: #include <stdio.h> int main(void) { // Note that fun() is not declared printf("%d\n", fun()); return 0; } char fun() { return 'G'; } 错误:其