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 拡張機能のフル コード例の一部です。このコードでは、 TraceExtensionAttribute
が attribute パラメータに渡されることを前提としています。フル コード例では、 TraceExtensionAttribute
は SoapExtensionAttribute の派生クラスで、 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