Один из моих классов [DataContract] содержит [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 '.
Кто-нибудь знает, как решить эту проблему (заставить ее обрабатывать подклассы)?