2011-04-19 21 views
4

我生成我们的Java Web服务的WSDL,然后每次我做出改变将它导入到我们的C#应用​​程序。每次完成后,xs:choice元素都会重新生成,但通常取决于首先生成哪个元素。例如,让我们说当我导入它生成的WSDL时ItemChoiceType1ItemChoiceType2。下一次我导入WSDL(更改后)将切换ItemChoiceType1ItemChoiceType2,因此我必须重新编码我使用那些ItemChoiceType s的位置。无论如何要重新命名或为这些结构指定一个名称,或让它们每次都以相同的方式生成?.NET WSDL生成的xs:选择产品名称的选择绑定枚举

谢谢

+1

我对解决方案非常感兴趣的同样的问题 – capdragon 2011-04-19 20:10:45

回答

-1

这是WSDL.EXE的默认行为。由于xs:choice元素是未命名的序列,因此它们正在接收由WSDL.EXE生成的名称。

据我所知,没有哪个不会被覆盖,如果你重新导入WSDL的.NET侧的解决方法。

如果你有超过你的Java WSDL一定的控制,您可以指定复合类型来包装序列周围并为每种类型指定一个名称。这可能会生成一个您可以尝试的更有用的WSDL。

+0

-1:他不是在谈论数值。 – 2011-09-17 01:09:50

0

所以这个对象(myObject的)具有具有可在生成时间而改变,并且其值从Enum被分配一个类型的属性(myProperty的)。使用此属性setter函数:从枚举 /// 私有静态无效propertySetter(类型typeNeeded,对象targetObject,串PROPNAME,串字段名) {VAR = theDesiredValue Enum.Parse

///设置属性值( typeNeeded,fieldName);

Type t = targetObject.GetType(); 
    PropertyInfo info = t.GetProperty(propName); 
    if ((info == null) || (!info.CanWrite)) 
     return; 
    info.SetValue(targetObject, theDesiredValue, null); 
    return; 

}

//使用 propertySetter(myObject.myProperty.GetType(),myObject的, “myProperty的”, “enumValue”);

+0

不知道这是如何与我的问题相关的,你能否详细说明一下? – Cromat 2012-01-10 15:37:10