XmlIgnore on a 属性 inside a list
XmlIgnore on a property inside a list
如何忽略我尝试序列化的另一种类型列表中的一种类型的 属性?
public string SerializeTag(List<Tag> reservedTags)
{
string timestampFilenamePrefix = DateTime.Now.ToString("yyyyMMddHHmmss");
string filename = string.Format("ReservedTags_{0}.xml", timestampFilenamePrefix);
using (var stream = File.Create(filename))
{
var objectToBeSerialized = new CompanyDemoData();
objectToBeSerialized.TagsReserved = reservedTags;
var namespaces = new XmlSerializerNamespaces();
namespaces.Add("", "");
XmlAttributeOverrides xOver = new XmlAttributeOverrides();
XmlAttributes attrs = new XmlAttributes();
attrs.XmlIgnore = true;
xOver.Add(typeof(Tag), "GUID", attrs);
var serializer = new XmlSerializer(typeof(CompanyDemoData), xOver);
serializer.Serialize(XmlWriter.Create(stream), objectToBeSerialized, namespaces);
stream.Flush();
return filename;
}
}
{
[XmlRoot("CompanyDemoData")]
public class CompanyDemoData
{
[XmlElement("Tag")]
public List<Tag> TagsReserved { get; set; }
}
}
namespace Demo.Model
{
public class Tag
{
[XmlElement("TagId")]
public int ID { get; set; }
[XmlElement("GUID")]
public Guid Guid { get; set; }
}
}
我试图避免 GUID 属性 在某些情况下被序列化。所以不想在Tagclass中直接设置XmlIgnore属性。而且我不想对 GUID 使用可为 null 的包装器。
我认为错误是我正在为类型 CompanyDemoData 创建一个序列化程序,它不包含我试图设置覆盖属性的 属性。
提前致谢!
这里的错误在xOver.Add(typeof(Tag), "GUID", attrs)
中的参数member string
。
您传递的是 XMLElement Name
而不是 Member Name
,后者是 "Guid" 而不是 "GUID"。
该行应该是 xOver.Add(typeof(Tag), "Guid", attrs)
.
我已经测试过它并且有效。希望对你有用!
如何忽略我尝试序列化的另一种类型列表中的一种类型的 属性?
public string SerializeTag(List<Tag> reservedTags)
{
string timestampFilenamePrefix = DateTime.Now.ToString("yyyyMMddHHmmss");
string filename = string.Format("ReservedTags_{0}.xml", timestampFilenamePrefix);
using (var stream = File.Create(filename))
{
var objectToBeSerialized = new CompanyDemoData();
objectToBeSerialized.TagsReserved = reservedTags;
var namespaces = new XmlSerializerNamespaces();
namespaces.Add("", "");
XmlAttributeOverrides xOver = new XmlAttributeOverrides();
XmlAttributes attrs = new XmlAttributes();
attrs.XmlIgnore = true;
xOver.Add(typeof(Tag), "GUID", attrs);
var serializer = new XmlSerializer(typeof(CompanyDemoData), xOver);
serializer.Serialize(XmlWriter.Create(stream), objectToBeSerialized, namespaces);
stream.Flush();
return filename;
}
}
{
[XmlRoot("CompanyDemoData")]
public class CompanyDemoData
{
[XmlElement("Tag")]
public List<Tag> TagsReserved { get; set; }
}
}
namespace Demo.Model
{
public class Tag
{
[XmlElement("TagId")]
public int ID { get; set; }
[XmlElement("GUID")]
public Guid Guid { get; set; }
}
}
我试图避免 GUID 属性 在某些情况下被序列化。所以不想在Tagclass中直接设置XmlIgnore属性。而且我不想对 GUID 使用可为 null 的包装器。
我认为错误是我正在为类型 CompanyDemoData 创建一个序列化程序,它不包含我试图设置覆盖属性的 属性。
提前致谢!
这里的错误在xOver.Add(typeof(Tag), "GUID", attrs)
中的参数member string
。
您传递的是 XMLElement Name
而不是 Member Name
,后者是 "Guid" 而不是 "GUID"。
该行应该是 xOver.Add(typeof(Tag), "Guid", attrs)
.
我已经测试过它并且有效。希望对你有用!