![](/img/trans.png)
[英]XMLSerializer InvalidOperationException when serializing protobuf
[英]XmlSerializer ignoring attribute overrides when serializing
我有一個復雜的圖形,每個屬性都有一個自定義屬性。 一旦我有了一個對象,我就會遍歷屬性,檢查自定義屬性,並在必要時添加要忽略的屬性:
var ignoreAttribute = new XmlAttributes() {
XmlIgnore = true
};
var overrides = new XmlAttributeOverrides();
var objType = obj.GetType();
var properties = objType.GetProperties();
foreach (var property in properties)
{
var attrib = property.GetCustomAttribute<ExportLevelAttribute>();
if (!attrib.Values.Contains(level))
{
try
{
var element = property.GetCustomAttribute<XmlElementAttribute>();
var name = element?.ElementName == string.Empty ? property.Name : element.ElementName;
overrides.Add(property.PropertyType, name, ignoreAttribute);
}
catch { }
continue;
}
}
using (var stream = new MemoryStream())
using (var writer = new StreamWriter(stream, new UTF8Encoding(false)))
{
var xml = new XmlSerializer(typeof(MyRootObject), overrides);
xml.Serialize(writer, obj);
return Encoding.UTF8.GetString(stream.ToArray());
}
正在將屬性添加到覆蓋中。 但是,在序列化時,那些設置為忽略的屬性仍在序列化。
我錯過了什么嗎?
傳遞給XmlAttributeOverrides.Add
的type
適用於object
級別,而不是member
級別: XmlAttributeOverrides 。
因此,當您添加覆蓋時,請指定您之前獲得的對象類型:
overrides.Add(objType, name, ignoreAttribute);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.