У меня есть веб-служба на основе WSE 3.0 и клиентское приложение WinForms, которое использует типы, определенные в References.cs этой службы, но подклассирует их для предоставления некоторых дополнительных функций, требуемых клиентом.
Тем не менее, когда я передаю экземпляр подкласса обратно в веб-службу, даже если я явно приведу обратно к исходному типу, я получаю ужас:
Используйте атрибут XmlInclude или SoapInclude для указания типовкоторые не известны статически.
в отношении моего производного типа.
Сводка кода:
public class DefinedInReferenceCs
{
// ...
}
public class ClientSubclass : DefinedInReferenceCs
{
// My extra stuff
}
public class MyClient
{
public CallTheWebService(ClientSubclass obj)
{
// obj is an instance of ClientSubclass, cast as DefinedInReferenceCs
svc.MyMethod((DefinedInReferenceCs)obj);
// Throws an exception complaining that ClientSubclass is not statically known
}
}
Я могу обойти это, явно создав DefinedInReferenceCsэкземпляр и выполнение глубокого копирования соответствующих полей.Есть ли лучший способ?