0
我正在使用WebClient從URI讀取wsdl。如何從wsdl動態創建代理時擺脫XmlIgnoreAttribute()?
WebClient client = new WebClient();
Stream wsdlStream = client.OpenRead(wsdlURI);
ServiceDescription wsdl = ServiceDescription.Read(wsdlStream);
然後我設置命名空間和CompileUnit和使用ServiceDescriptionImporter的GenerateCodeFromCompileUnit方法生成的.cs類文件。
然後我編譯程序集並使用反射來調用方法。問題是,我創建的.cs文件具有其他xml屬性。而附加參數,如:
public void Calc(int a, [System.Xml.Serialization.XmlIgnoreAttribute()] bool aSpecified
當我從這個源文件中創建組件,我得到更多的參數的方法,比他們應該有。原來的方法是這樣的:
public int Calc(int a, int b)
和方法生成的源代碼如下所示:
public int Calc(int a, bool aSpecified, int b, bool bSpecified, out int CalcResult, out bool CalcResultSpecified)
我怎樣才能動態生成的源文件,而無需這些額外的參數?所以我可以將它編譯爲程序集並使用反射來調用原始方法?
感謝您的回覆,但正如你所說...我堅持與他們。 :X – solar 2010-07-30 08:17:49
卡住了,你必須處理它們;你不能擺脫它們,所以你只需要在你的反射調用中編寫代碼來處理它們,就像你對真實參數所做的那樣。這真的不是什麼大問題。 – tomasr 2010-07-30 14:03:22