wsdlから生成されたプロキシからMethodInfo
を読んでいます。webmethodsに余分なパラメータが追加されました
方法の一つは、3(int
)パラメータとint
戻り値の型を持っていますが、私はParameterInfo[]
を探るとき、私は実際には8つのパラメータを参照してください、
Int32
、Boolean
、Int32
をBoolean
,Int32
、Boolean
、Int32&
、 これらの追加のパラメータが発信ん
Boolean&
?もう少し詳しく説明し
UPDATE
、生成されたプロキシのコードは、次のようになります。
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/IInleerAppService/AddThreeNumbers", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void AddThreeNumbers(int one, [System.Xml.Serialization.XmlIgnoreAttribute()] bool oneSpecified, int two, [System.Xml.Serialization.XmlIgnoreAttribute()] bool twoSpecified, int three, [System.Xml.Serialization.XmlIgnoreAttribute()] bool threeSpecified, out int AddThreeNumbersResult, [System.Xml.Serialization.XmlIgnoreAttribute()] out bool AddThreeNumbersResultSpecified) {
object[] results = this.Invoke("AddThreeNumbers", new object[] {
one,
oneSpecified,
two,
twoSpecified,
three,
threeSpecified});
AddThreeNumbersResult = ((int)(results[0]));
AddThreeNumbersResultSpecified = ((bool)(results[1]));
}
これはなぜでしょうか?
UPDATE
私は通りますが、これで盗聴している場合、あなた杖は簡単に、単純に次のコードスニペットを適用することによって、それらの余分なパラメータを表示しないよう:
if (!parameterInfo[i].Name.EndsWith("Specified") && !parameterInfo[i].IsRetval && !parameterInfo[i].Name.EndsWith("Result"))
{
// magic
}
MethodInfoを取得するために何を使用しましたか?これは同じ方法だと確信していますか?たとえばここではメソッド名は何ですか?基本的には:より多くの文脈をしてください –
私はちょうどコードでプロキシアセンブリを生成し、反射を介してそれを読む。私は自分自身もwebserviceを書いた、それは本当に同じ方法です。 – Oxymoron