Унаследованный тип класса wse3 не принят в качестве параметра метода
Я постараюсь описать мою проблему. У меня есть метод в прокси-классе (автоматически сгенерированный wsdl), который принимает в качестве первого аргумента объект типа BaseType. Я пытаюсь передать унаследованный тип, и я получаю
Тип xyz не ожидался. Используйте атрибут XmlInclude или SoapInclude, чтобы указать типы, которые статически не известны
После долгих поисков я прочитал о пространстве имен и об атрибуте xmlinclude. Итак, изначально у меня было
/// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")]Svices.Web.Sec..WebServiceBindingAttribute(Name="esDatabaseServersSoap", Namespace="http://smbsaas/foo/bar")] [System.Xml.Serialization.XmlIncludeAttribute(typeof(SomeOtherType))]
открытый частичный класс esDatabaseServers: Microsoft.Web.Services3.WebServicesClientProtocol {private System.Threading.SendOrPostCallback GetRawSqlDatabasesPagedOperationCompleted;................................................
................................................
public int AddSqlDatabase (элементBaseClass, строка groupName) {
а потом я попытался добавить
[System.Web.Services.WebServiceBindingAttribute(Name="esDatabaseServersSoap", Namespace="http://smbsaas/foo/bar")] [System.Xml.Serialization.XmlIncludeAttribute(typeof(SomeOtherType))] [System.Xml. Serialization.XmlIncludeAttribute (typeof (MyInheritedType))] я добавил эту строку
открытый частичный класс esDatabaseServers:
я получил
System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: серверу не удалось прочитать запрос. ---> System.InvalidOperationException: в документе XML есть ошибка. ---> System.InvalidOperationException: указанный тип не был распознан: name = 'MyInheritedType', namespace = "http: // smbsaas / foo / bar", at.
MyInheritedType наследуется от baseClass.
Я действительно не знаю, что делать. Есть идеи, пожалуйста? Спасибо!
1 ответ
Вы пытались поместить атрибуты XmlInclude в базовый класс - как упоминалось в этом посте: Web-сервисы - XmlInclude в производном классе вместо базового класса?
Однако это будет полезно, только если у вас есть веб-сервис.
Если это просто для некоторых улучшений (что может быть не ваш случай), вы можете попробовать использовать частичные классы.