[DataContract] クラスの 1 つに、リストである [DataMember] が含まれています。BaseClass にはいくつかの異なるサブクラスがあります。
そのリストにサブクラスのインスタンスが含まれている場合は常に、サービスがリクエスト チャネルに戻っている間/後に例外が発生します。リストにサブクラスが含まれていない場合は、正常に機能します。
これが私のコードの例です(それ自体は機能しません):
public class BaseClass
{
}
public class BaseClassSub : BaseClass
{
}
[DataContract]
public class MyClass
{
List<BaseClass> m_Classes = new List<BaseClass>();
[DataMember]
public List<BaseClass> Classes
{
get { return m_Classes; }
set { m_Classes = value; }
}
}
[ServiceContract]
public interface IMyService
{
[OperationContract]
MyClass GetMyClass();
}
public class MyService : IMyService
{
public MyClass GetMyClass()
{
MyClass o = new MyClass();
//THIS WORKS!!!!
//o.Classes = new List<BaseClass>() { new BaseClass() };
//THIS DOES NOT WORK!!!!
o.Classes = new List<BaseClass>() { new BaseClassSub() };
return o;
}
}
デバッグ時に次のエラーが発生します。
ソケット接続が中止されました。これは、メッセージの処理中にエラーが発生したか、リモート ホストが受信タイムアウトを超過したか、基になるネットワーク リソースの問題が原因である可能性があります。ローカル ソケットのタイムアウトは「00:00:59.6560000」でした。
この問題を解決する方法を知っている人はいますか (サブクラスを処理するようにする)?