Tôi đang cố gắng sắp xếp một số đối tượng thu được từ Bên thứ ba .NET Lib thành tệp XML.Làm cách nào để bỏ qua thuộc tính [XMLIgnore]
Khi tôi Go To Definition
cho đối tượng, một số các thuộc tính của đối tượng được đánh dấu là [XMLIgnore]
Có cách nào để nói với System.Xml.Serialization.XmlSerializer
tôi bỏ qua thực tế rằng một số khách sạn có thuộc tính đó và rằng nó nên serialize tất cả mọi thứ trong đối tượng.
tôi có lẽ có thể có được nguồn và biên dịch lại nó mà không có sự XMLIgnore
thuộc tính nhưng nó muốn được tốt đẹp nếu XmlSerializer
đã có một số thuộc tính Ghi đè đẹp như
XmlSerializer xmls = new XmlSerializer(
typeof(MyObject),
Settings.DoNotApplyXMLAttributeRules
);
Cảm ơn trước
EDIT
Đã thử XmlAttributeOverrides như được đề xuất nhưng không phải aving nhiều niềm vui. Đây là định nghĩa đối tượng (đó là từ FlickrAPI cho một hình ảnh)
[Serializable]
public class Photo
{
//Some code omitted
[XmlIgnore]
public string LargeUrl { get; }
}
Và heres mã serializer Tôi đã viết ... vẫn không hoạt động ...
XmlWriter xtw = XmlWriter.Create(Server.MapPath("~/App_Data/Data.xml"));
XmlAttributes photoAttributes = new XmlAttributes();
photoAttributes.XmlIgnore = false;
XmlAttributeOverrides photoOverrides = new XmlAttributeOverrides();
photoOverrides.Add(typeof(Photo), "LargeUrl", photoAttributes);
XmlSerializer xmlphoto = new XmlSerializer(typeof(Photo), photoOverrides);
đã thử đó, nhưng không có niềm vui. Bất kỳ đề xuất nào khác sẽ được đánh giá cao. Tôi đã thêm mã vào câu hỏi ban đầu trong trường hợp tôi đang làm điều gì đó ngớ ngẩn. –
LargeUrl không có setter, do đó, ngay cả khi không có thuộc tính XmlIgnore, nó sẽ không được tuần tự hóa. – manji
ah đúng. Tôi đã nhận được xung quanh nó bằng cách tạo ra một lớp proxy để lưu trữ các giá trị trong và sau đó serializing đó một cách riêng biệt. –