我正在尝试向外部系统发送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 };
}
任何建议都将不胜感激。
答案 0 :(得分:2)
看起来您正在创建自己的 AvailAppType 枚举版本,当它已经在您正在使用的Web服务的生成代理代码中提供时。使用生成的代理代码的枚举版本,我相信UpdateRatePacks.IService.AvailAppType?
作为类型而不是定义自己的版本。尽管它们具有相同的枚举名称,但它们位于不同的命名空间中,在编译器的眼中使它们不同。
希望有所帮助。