我们正在使用动态公开 Web 服务的 Microsoft ERP。服务产生的服务是我们无法控制的。对于如何创建和公开对象(包括类型定义),我们没有发言权。当从 Web 服务中添加或删除新方法时,所有类型枚举都会重新编号,并且在更新到新定义后,使用 Web 服务的所有内容都会被清除。所以本质上,
enumeration Type1
Item1
Item2
Item3
...可能成为
enumeration Type6
Item1
Item2
Item3
...随着枚举类型名称的变化,但类型的成员保持静态。该服务输出的服务看起来与使用 XSD.exe 生成对象的最终结果完全相同。因此,任何时候有人在服务上公开一个新方法(通过 ERP GUI),对象都会被重建,类型按字母顺序分配给服务定义,重新公开,留下整个代码库。
我尝试使用反射来确定类型,然后将静态成员解析为新的业务对象,但它不起作用,因为我无法在不知道类型的实际名称的情况下对枚举进行类型转换。以下将不起作用。
System.Type t = service.BusinessObjectEnumeration.GetType();
service.SomeField = Enum.Parse(t,"Item1");
...因为编译器抛出错误,因为我没有明确地转换枚举。
有什么想法可以在将类型动态转换为正确的枚举时克服这个问题吗?
同样,我不能修改服务公开的实际对象,只能修改订阅服务的代码。