【发布时间】:2019-11-25 11:23:41
【问题描述】:
我正在尝试在 C# 中序列化一个类,当对象中没有空值时,它可以正常工作。以下是课程
public class EnquiryResponseInfo
{
public string EnquiryId { get; set; }
public EnquiryViewModel Enquiry { get; set; }
}
当我提供以下值时,效果很好。
EnquiryResponseInfo tt = new EnquiryResponseInfo()
{
EnquiryId = "xxx",
Enquiry = new EnquiryViewModel()
{
Name = "Test user",
Address = "Test Address"
}
}
但是当 Enquiry 为 null 时,它不会序列化。我有一个条件,即 Enquiry 将为空,但那里的 EnquiryId 会有值。
以下是序列化类的方法。
public static string Serialize<T>(T toSerialize)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (StringWriter textWriter = new StringWriter())
{
xmlSerializer.Serialize(textWriter, toSerialize);
return textWriter.ToString();
}
}
请帮忙。
【问题讨论】:
-
"但是当 Inquiry 为 null 时,它不会序列化。" - 查询不序列化?或者整个类型不序列化?如果属性为空,它应该可以正常工作 - 究竟会发生什么?显示它工作正常的示例,输出:gist.github.com/mgravell/bd817bebd0f4a3d52c5edf0bb4f0fcf8
-
List
ApplicationInfo = new List () { new EnquiryResponseInfo() { EnquiryId = "e30a092d-b7c1-4516-8e48-50efe307c7e5", Inquiry = null } }; -
反映类型“System.Collections.Generic.List`1[EnquiryResponseInfo]”时出现错误。给我这个错误...
-
“反映类型 'System.Collections.Generic.List`1[EnquiryResponseInfo]' 时出现错误” - 提示:查看
.InnerException- 和.InnerException.InnerException等(尽可能低)去);XmlSerializer实际上非常擅长告诉你出了什么问题,但它通常是异常堆栈的几级 -
这里有一个更新的要点,它使用您的
Serialize<T>方法,并使用List<EnquiryResponseInfo>来匹配帖子/cmets:gist.github.com/mgravell/503a885c291a4eeee2be201473059f75 - 它工作正常 - 所以:无论问题是什么,它不在问题中;您需要发布足够的代码让我们重现问题,或者查看嵌套异常
标签: c# xml xml-serialization