Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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/0/email/3.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# 如何处理DataContractSerializer中的DBNull?_C#_.net_Serialization - Fatal编程技术网

C# 如何处理DataContractSerializer中的DBNull?

C# 如何处理DataContractSerializer中的DBNull?,c#,.net,serialization,C#,.net,Serialization,我有下面的C代码 如果我不填充列[c2],这意味着此数据行中存在DBNull值,那么我在尝试运行s.WriteObject()时将遇到错误 错误: 使用数据协定名称键入“System.DBNull” “DBNull:”不是 预期。如果您正在使用,请考虑使用DATACONTracTracver DataContractSerializer或将任何静态未知的类型添加到 已知类型的列表-例如,通过使用KnownTypeAttribute 属性,或将它们添加到传递给 序列化程序 但根据MS文件“ DBN

我有下面的C代码

如果我不填充列[c2],这意味着此数据行中存在DBNull值,那么我在尝试运行s.WriteObject()时将遇到错误

错误:

使用数据协定名称键入“System.DBNull” “DBNull:”不是 预期。如果您正在使用,请考虑使用DATACONTracTracver DataContractSerializer或将任何静态未知的类型添加到 已知类型的列表-例如,通过使用KnownTypeAttribute 属性,或将它们添加到传递给 序列化程序

但根据MS文件“

DBNull类型以特殊方式处理。它是一种单体类型, 反序列化后,反序列化程序将尊重单例 约束,并将所有DBNull引用指向singleton实例。 由于DBNull是一种可序列化类型,因此需要 序列化格式化程序权限

DBNull似乎是一种受支持的类型,我在这里真的很困惑。 请哪位大师分享几盏灯好吗?比如我该怎么办

我知道我可以扫描所有表行,并查找列值是否等于DBNull.value,如果是,我会为此列设置一个空字符串或其他内容,但这不是我想要的,因为这将“篡改”DataTable值


提前感谢您的帮助

将DBNull添加到
knownTypes
列表中

var s = new DataContractSerializer(typeof(object[]), new [] { typeof(DBNull) });
var s = new DataContractSerializer(typeof(object[]), new [] { typeof(DBNull) });