不能隐式转换类型你错过了演员吗?数组,枚举器和Web服务

时间:2012-03-22 00:38:20

标签: c# .net arrays web-services enumerators

我正在尝试向外部系统发送soap消息,该系统已经预定义了数据类型,我必须使用数组和枚举器将其集成到我的代码中。

我的问题是枚举变量给出了以下错误:

  
    
      

错误1无法将类型'UpdateRatePacks._Default.Rate.AvailAppType'隐式转换为'UpdateRatePacks.IService.AvailAppType?'。存在显式转换(您是否错过了演员?)

    
  

错误说它无法将我页面上的类型转换为我的webservice上的类型,但数据结构是相同的,我错过了什么吗?

我已经在所有地方搜索过这个错误,还搜索了网络服务中的枚举数,数组中的枚举数,将枚举数转换为数组但没有任何效果。错误仍然相同。

甚至包含了解析转换的这行代码:

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

此代码的复杂性在于它包含数组中的枚举器,因此我不知道我在枚举器或数组本身或整个Web服务中是否出错。

这是我的代码的一部分,它将更新发送为错误来自

的消息
 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 个答案:

答案 0 :(得分:2)

看起来您正在创建自己的 AvailAppType 枚举版本,当它已经在您正在使用的Web服务的生成代理代码中提供时。使用生成的代理代码的枚举版本,我相信UpdateRatePacks.IService.AvailAppType?作为类型而不是定义自己的版本。尽管它们具有相同的枚举名称,但它们位于不同的命名空间中,在编译器的眼中使它们不同。

希望有所帮助。