1

サービスへのプロキシを作成すると、いくつかの追加パラメーターがXmlIgnoreAttributeとして追加されます。例えば:

インターフェイスメソッドコントラクト宣言:

[OperationContract]
void AddToList(int integerToAdd);

メソッドの実装:

public void AddToList(int integerToAdd) {
    intList.Add(integerToAdd);
}

ここで、サービスへのプロキシを動的に生成した場合のこのメソッドの実際の外観は次のとおりです。

/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/IService1/AddToList", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void AddToList(int integerToAdd, [System.Xml.Serialization.XmlIgnoreAttribute()] bool integerToAddSpecified)
{
    this.Invoke("AddToList", new object[] {integerToAdd, integerToAddSpecified});
}

このパラメーターのParameterInfoオブジェクトがある場合、このパラメーターがXmlIgnoreAttributeとしてマークされていることを確認するにはどうすればよいですか?

これがこれらの自動生成されたパラメーターをチェックする良い方法ではない場合、それらをチェックする別の(より良い)方法はありますか?

ボーナス:非ブール型が生成され、XmlIgnoreAttributeとしてマークされる場合はありますか?

4

1 に答える 1

1

ParameterInfo.GetCustomAttributes()を使用すると思いますか?

ParameterInfo secondParam = ..
object[] attribs = 
          secondParam.GetCustomAttributes(typeof(XmlIgnoreAttribute), false);
//the second bool param is ignored. See the docs.
//check if => attribs has anything..

(1)なぜこれらのパラメータをチェックしているのかわからないので、それが良い/良いかどうかはわかりません。(2) 2番目の質問についてはよくわかりません。これはVScodegen(svcutil?)からのものだと思います。おそらく、これを設計したMSFTの方がよく知っているかもしれません。

于 2013-02-07T16:13:02.407 に答える