Унаследованный тип класса 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 в производном классе вместо базового класса?

Однако это будет полезно, только если у вас есть веб-сервис.

Если это просто для некоторых улучшений (что может быть не ваш случай), вы можете попробовать использовать частичные классы.

Другие вопросы по тегам