我們正在使用可以動態公開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");
...因爲編譯器拋出一個錯誤,因爲我沒有明確地轉換枚舉。
任何想法如何在動態地將類型轉換爲正確的枚舉時解決此問題?
同樣,我不能修改服務公開的實際對象,只能修改訂閱服務的代碼。
感謝, 喬治
我想,使用反射來檢索值和設置屬性是唯一可用的方式,給定OP約束。 當然這意味着即使使用這樣的枚舉作爲參數的方法也應該使用反射來調用(因爲它是不可知的調用參數類型)... – BladeWise 2010-07-05 07:16:36