IList インターフェイスではなく、List 型のプロパティに 1 対多の関係をマップするように NHibernate に指示することはできますか?
NHibernate が独自の IList 実装を遅延読み込みに使用していることは知っていますが、この機能は必要ありません。代わりに、シリアライズ可能なクラスが必要ですが、具体的な List クラスの代わりに IList インターフェイスを使用しても実現できません。
IList インターフェイスではなく、List 型のプロパティに 1 対多の関係をマップするように NHibernate に指示することはできますか?
NHibernate が独自の IList 実装を遅延読み込みに使用していることは知っていますが、この機能は必要ありません。代わりに、シリアライズ可能なクラスが必要ですが、具体的な List クラスの代わりに IList インターフェイスを使用しても実現できません。
本当にこれを行う必要がある場合、唯一の現実的なオプションは、シリアライゼーション戦略を変更することです。
標準の Serialization 属性ではなく、System.Runtime.Serialization で DataContract 属性を使用できます。これにより、インターフェイスのシリアル化がサポートされます。
標準のシリアル化を使用する必要がある場合は、シリアル化する値を格納するために別のプロパティを使用し、シリアル化で値を入力するだけです。
//NHibernate property
public virtual IList<Entity> Entities
{
get;
set;
}
//Serialized property
public List<Entity> SerializedEntities
{
get;
set;
}
[OnSerializing]
void DoStuff(StreamingContext context)
{
SerializedEntities = // Whatever you want to serialize...
}