xml ファイルをデシリアライズしてドメイン クラスをロードしようとしています。そこで、ドメイン クラスで System.Collections.Generic.List を使用しました。しかし、Session オブジェクトを使用してオブジェクトを保存しようとすると、「タイプ 'NHibernate.Collection.Generic.PersistentGenericBag 1[MyFirstMapTest.Class5]' to type 'System.Collections.Generic.List
1[MyFirstMapTest.Class5]' のオブジェクトをキャストできません」という例外で失敗します。この問題は以前のディスカッションの一部に投稿されており、その答えは List の代わりに IList を使用することでした (タイプ NHibernate.Collection.Generic.PersistentGenericBag のオブジェクトを List にキャストできません) 。
しかし、IList を使用すると、xml を Domain クラスに逆シリアル化できません。
XmlTextReader xtr = new XmlTextReader(@"C:\Temp\SampleInput.xml");
XmlSerializer serializer = new XmlSerializer(objClass5.GetType());
objClass5 = (MyFirstMapTest.Class5)serializer.Deserialize(xtr);
session.Save(objClass5);
以下のエラーをスローしています。「タイプ System.Collections.Generic.IList`1[[xxxxxxxxx, Examples, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] のメンバー xxxxx をシリアル化できません。これはインターフェイスであるためです。」
List の代わりに PersistentGenericBag を使用しようとしましたが、PersistentGenericBag はシリアル化できません。したがって、デシリアライゼーションは機能していません。
この問題を解決するにはどうすればよいですか? この問題を見ていただきありがとうございます。