如何从wsdl动态创建代理时摆脱XmlIgnoreAttribute()?

时间:2010-07-29 12:47:52

标签: wcf dynamic proxy wsdl

我正在使用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)

如何在没有这些附加参数的情况下获得动态生成的源文件?所以我可以将它编译成汇编并使用反射来调用原始方法吗?

1 个答案:

答案 0 :(得分:0)

由于原始WSDL将某些参数指定为可选但值为类型,并且XmlSerializer不支持Nullable< T>,因此xxxSpecified参数允许您告诉它值是否为null或不。猜猜你被他们困住了。