Не можете неявно преобразовать тип, вам не хватает приведения? Массивы, счетчики и веб-сервисы - PullRequest
0 голосов
/ 22 марта 2012

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

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

Ошибка 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 Ответ

2 голосов
/ 22 марта 2012

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

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

...