Serializacja kolekcji generycznych przez XmlSerializer

0

Cześć,

Mam nadzieję, że nie jest to kolejny problem z rodziny "nie da się" :) Otóż chcę wykonać serializację klasy o takiej definicji:

[System.Serializable]
public class InParameters
{
	public InParameters()
	{
	}




	[
		System.Xml.Serialization.XmlArray("ElementCollection"), System.Xml.Serialization.XmlArrayItem("Element", typeof(BaseElement))
	]
	public ElementCollection ElementCollection
	{
		set
		{
			this.elementcollection = value;
		}
		get
		{
			return this.elementcollection;
		}
	}
}

gdzie ElementCollection zdefiniowany jest w taki sposób:

public class ElementCollection : System.Collections.Generic.List<BaseElement>
{
	public ElementCollection()
	{
	}
}

a by jeszcze tego szczęścia tego było mało BaseElement wygląda tak:

public abstract class BaseElement
{
	public BaseElement()
	{
	}
}

Problem w tym, że podczas serializacji otrzymuję wyjątek o tym, że właściwy element, który jest uszczegółowieniem BaseElement nie może zostać serializowany i wymagane jest dodanie atrybutu XmlInclude.

Problem w tym, że BaseElement i ElementCollection jest w DLL bazowej i nie może znać innych elementów. Stąd z mojej strony pytanie: czy mogę jakoś dodać ten atrybut w klasie która zna wszystkie właściwe elementy i zna bazowy element?

Pozdrawiam,
Grzegorz

0

Rozwiązanie:

new System.Xml.Serialization.XmlSerializer(typeof(...), new System.Type[] { });

w tablicy typów podaje dodatkowe typy danych :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1