我正在使用WebClient从URI读取wsdl。
WebClient client = new WebClient();
Stream wsdlStream = client.OpenRead(wsdlURI);
ServiceDescription wsdl = ServiceDescription.Read(wsdlStream);
然后我设置Namespace和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)
如何在没有这些附加参数的情况下获得动态生成的源文件?所以我可以将它编译成汇编并使用反射来调用原始方法吗?
答案 0 :(得分:0)
由于原始WSDL将某些参数指定为可选但值为类型,并且XmlSerializer不支持Nullable< T>,因此xxxSpecified参数允许您告诉它值是否为null或不。猜猜你被他们困住了。