次のようなキャッスル アクティブ レコード クラスで XMLSerializer を使用しようとしています。
[ActiveRecord("Model")]
public class DataModel : ActiveRecordBase
{
private IList<Document> documents;
[XmlArray("Documents")]
public virtual IList<Document> Documents
{
get { return documents; }
set
{
documents = value;
}
}
}
ただし、XMLSerializer は、IList インターフェイスが原因で問題が発生します。(例外が発生します:タイプ 'System.Collections.Generic.IList`1.... のメンバー 'DataModel.Documents' をシリアル化できません。 )
これは XMLSerializer の制限であり、推奨される回避策は、List<T>
代わりにインターフェイスとして宣言することです。
そのため、 を に変更してみIList<Document>
ましたList<Document>
。これにより、ActiveRecord で Exception:
Type of property DataModel.Documents must be an interface (IList、ISet、IDictionary、またはそれらの一般的なカウンター パーツ) が発生します。プロパティ タイプとして ArrayList または List を使用することはできません。
問題は、IList メンバーを含む Castle ActiveRecord で XMLSerializer をどのように使用するかということです。