次の方法で共有


SoapExtension.GetInitializer メソッド (LogicalMethodInfo, SoapExtensionAttribute)

派生クラスでオーバーライドされると、SOAP 拡張機能は XML Web サービス メソッドに適用された属性を使用して、XML Web サービス メソッドに固有のデータを 1 回の動作で初期化します。

Overloads Public MustOverride Function GetInitializer( _
   ByVal methodInfo As LogicalMethodInfo, _   ByVal attribute As SoapExtensionAttribute _) As Object
[C#]
public abstract object GetInitializer(LogicalMethodInfomethodInfo,SoapExtensionAttributeattribute);
[C++]
public: virtual Object* GetInitializer(LogicalMethodInfo* methodInfo,SoapExtensionAttribute* attribute) = 0;
[JScript]
public abstract function GetInitializer(
   methodInfo : LogicalMethodInfo,attribute : SoapExtensionAttribute) : Object;

パラメータ

  • methodInfo
    SOAP 拡張機能が適用される XML Web サービス メソッドの固有の関数プロトタイプを表す LogicalMethodInfo
  • attribute
    XML Web サービス メソッドに適用される SoapExtensionAttribute

戻り値

SOAP 拡張機能でキャッシングのために初期化する Object

解説

構成ファイルを使用して SOAP 拡張機能を構成した場合については、 Type を受け入れる GetInitializer オーバーロードのトピックを参照してください。

SOAP 拡張機能によるデータの初期化方法は以下のように 3 種類あり、それぞれ目的が異なっています。

  • クラス コンストラクタ - クラス コンストラクタは SOAP 拡張機能がインスタンス化されるたびに呼び出され、通常はメンバ変数の初期化に使用されます。
  • GetInitializer- GetInitializer 。ただし、XML Web サービス メソッドへの SOAP 要求が最初に行われたときに 1 回だけ実行されます。XML Web サービス メソッドにカスタム属性が適用されている場合は、 GetInitializer メソッドが呼び出されます。この呼び出しにより SOAP 拡張機能は、プロトタイプ情報について XML Web サービス メソッドの LogicalMethodInfo を調査したり、 SoapExtensionAttribute の派生クラスから渡された拡張機能固有のデータにアクセスできます。戻り値は ASP.NET によりキャッシュされ、後続の Initialize メソッドに渡されます。したがって、 GetInitializer で行われた初期化は、基本的に一度だけ実行されるようにカプセル化されます。
  • Initialize- Initialize が呼び出されるたびに XML Web サービス メソッドに対して SOAP 要求が行われますが、 GetInitializer で初期化された Object が渡されるという点でクラス コンストラクタより優れています。

使用例

[Visual Basic, C#, C++] SoapExtensionAttribute の派生クラスを使用して SOAP 拡張機能固有の渡されたデータを取得し、このデータを GetInitializer にキャッシュするコードの例を次に示します。このコード例は、 SoapExtension クラスの概要にある TraceExtension SOAP 拡張機能のフル コード例の一部です。このコードでは、 TraceExtensionAttributeattribute パラメータに渡されることを前提としています。フル コード例では、 TraceExtensionAttributeSoapExtensionAttribute の派生クラスで、 Filename プロパティを追加しています。 GetInitializer はこれをキャッシュに格納します。

 
' When the SOAP extension is accessed for the first time, 
' cache the file name passed in by the SoapExtensionAttribute.

Public Overloads Overrides Function GetInitializer( _
    methodInfo As LogicalMethodInfo, _
    attribute As SoapExtensionAttribute) As Object    
    Return CType(attribute, TraceExtensionAttribute).Filename
End Function

[C#] 
// When the SOAP extension is accessed for the first time, cache the 
// file name passed in by the SoapExtensionAttribute.    
public override object GetInitializer(LogicalMethodInfo methodInfo,
    SoapExtensionAttribute attribute) 
{
    return ((TraceExtensionAttribute) attribute).Filename;
}

[C++] 
// When the SOAP extension is accessed for the first time, cache the 
// file name passed in by the SoapExtensionAttribute.    
public:
Object* GetInitializer(LogicalMethodInfo* /*methodInfo*/,
   SoapExtensionAttribute* attribute) 
{
   return (dynamic_cast<TraceExtensionAttribute*> (attribute))->Filename;
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

参照

SoapExtension クラス | SoapExtension メンバ | System.Web.Services.Protocols 名前空間 | SoapExtension.GetInitializer オーバーロードの一覧 | Initialize | LogicalMethodInfo | SoapExtensionAttribute