Не можете неявно преобразовать тип, вам не хватает приведения? Массивы, счетчики и веб-сервисы

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

Моя проблема в том, что переменные перечислителя дают мне следующую ошибку:

Ошибка 1 Не удается неявно преобразовать тип "UpdateRatePacks._Default.Rate.AvailAppType" в "UpdateRatePacks.IService.AvailAppType?". Существует явное преобразование (вам не хватает приведения?)

Ошибка говорит, что она не может преобразовать тип на моей странице в тип на моем веб-сервисе, но структуры данных одинаковы. Я что-то пропустил?

Я везде искал эту ошибку, также искал счетчики в веб-сервисе, счетчики в массивах, преобразовывал счетчики в массивы, но ничего не помогало. Ошибка все та же.

Даже включил эту строку кода для разбора преобразования:

ureq.RatePackages[2].Rates[1].AvailabilityApplicationType = Rate.AvailAppType)Enum.Parse(typeof(Rate.AvailAppType), val);

Сложность этого кода в том, что он содержит перечислители в массивах, поэтому я не знаю, ошибаюсь ли я в перечислителе, или в самом массиве, или во всем веб-сервисе.

Это часть моего кода, который отправляет обновление в виде сообщения об ошибке

 protected void SendSoapMessage()
 {

  Rate.AvailabilityApplicationType val  =  Rate.AvailAppType.SET;
  ureq.RatePackages[1].Rates[0].AvailAppType = val;

ureq - метод UpdateRatePacks из веб-службы, которую я отправляю

Классы / Объекты, определенные ниже:

public class UpdateRatePacks
{
 public string Username;
 public string Password;
 public UpdateRatePack[] RatePackages;
}

    public class UpdateRatePack
    {
        public Int64 RatePackageId;
        public Rate[] Rates;

    }


    public class Rate
    {


        public enum AvailAppType { SET , INCREASE, DECREASE };


    }

Любой совет будет принята с благодарностью.

1 ответ

Решение

Похоже, что вы создаете свою собственную версию перечисления "В наличии AppType", когда она уже доступна в сгенерированном прокси-коде веб-службы, к которой вы обращаетесь. Используйте сгенерированную версию перечисления прокси-кода, что, я считаю, UpdateRatePacks.IService.AvailAppType? как тип, а не определить свой собственный. Несмотря на то, что они имеют одинаковые имена перечислений, они находятся в отдельных пространствах имен, что делает их разными в глазах компилятора.

Надеюсь, это поможет.

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