У меня есть два класса: Lookup
и LookupItem
, у которых Lookup
есть член с именем Items
, который является коллекцией LookupItem
s. Я не могу сериализовать Lookup
или LookupItem
. С первым я получаю ошибку The type LookupItem was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.
, а со вторым я получаю ошибку A circular reference was detected while serializing an object of type Lookup.
.
Как я могу решить эту проблему?
Я использую следующий код для сериализации:
public static string Serialize(object obj)
{
XmlSerializer ser = new XmlSerializer(obj.GetType());
StringBuilder sb = new StringBuilder();
StringWriter writer = new StringWriter(sb);
ser.Serialize(writer, obj);
return sb.ToString();
}
UPDATE:
скелет классов:
[ActiveRecord (Lazy = true)]
Открытый класс Lookup: ActiveRecordExtender, IComparable
{
public Lookup ()
{
} * * Тысяча двадцать-один
[Property]
public virtual string Title { set; get; }
// creating relation
[HasMany(typeof(LookupItem), Cascade = ManyRelationCascadeEnum.All)]
public virtual IList Items { set; get; }
}
[ActiveRecord (Lazy = true)]
открытый класс LookupItem: ActiveRecordExtender
{
public LookupItem ()
{
}
//creating relation
[BelongsTo("Lookup_ID")]
public virtual Lookup ContainerLookup { set; get; }
[Property]
public virtual string Title { set; get; }
[Property]
public virtual string Value { set; get; }
[Property]
public virtual int SortOrder { set; get; }
}
Обратите внимание, что я использую Catle ActiveRecord в качестве ORM, и обратите внимание, что эта проблема не связана с наследованием от ActiveRecordBase
. Потому что другие классы в этой области, которые не имеют отношений, работают должным образом.