Я пытаюсь сериализовать список , где T: EntityObject, и хотел бы пропустить все свойства EntityKey и другие свойства EntityReference из элементов в списке.Можно ли сделать это динамически, возможно, используя XmlAttributeOverrides?
Насколько я вижу, параметры XmlAttributeOverrides действительно указывают только на объект верхнего уровня, то есть на List , а не на сами T, что не очень полезномне.Может кто-нибудь указать мне способ динамического игнорирования свойств ArrayItems?
Вот простой пример, который я использовал, который не использует EntityObjects, но он должен проиллюстрировать, что я хотел бы сделать:
public class Car
{
public String Make { get; set; }
public String Model { get; set; }
public Double EngineSize { get; set; }
}
[Test]
public void WouldLoveToDynamicallyLeaveOutMembersOfArrayItems()
{
var cars = new List<Car>
{
new Car
{
Make = "Ferrari",
Model = "F1",
EngineSize = 6000
},
new Car
{
Make = "Williams",
Model = "F1",
EngineSize = 5500
}
};
var attributeOverrides = new XmlAttributeOverrides();
attributeOverrides.Add(typeof(Double), "EngineSize", new XmlAttributes {XmlIgnore = true});
var xs = new XmlSerializer(cars.GetType(), attributeOverrides, new []{ typeof(Car) }, new XmlRootAttribute("cars"), "");
var ms = new MemoryStream();
xs.Serialize(ms, cars);
ms.Position = 0;
var sr = new StreamReader(ms);
var result = sr.ReadToEnd();
Assert.IsFalse(result.Contains("EngineSize"));
}