フィーチャーのイベント

最終更新日: 2010年12月27日

適用対象: SharePoint Foundation 2010

Microsoft SharePoint Foundation では、フィーチャー イベントに対応するクラスが用意されています。これにより、フィーチャーがサーバー ファームにインストールされたとき、フィーチャーが新しい仮想サーバーに追加されたとき、またはフィーチャーが削除されたときに開始するイベントをトラップしたりイベントに応答したりできます。

これらのイベントの一部はポスト イベントです。つまり、それぞれの動作がコミットされ、フィーチャー定義がファームのフィーチャー定義コレクションに作成されてからイベントが開始します。

インストールをキャンセルしたり、フィーチャーのイベントを経由する操作をアンインストールしたりすることはできません。

フィーチャー イベントのクラス

  • Microsoft.SharePoint.SPFeatureReceiver   無効にして、フィーチャーの操作のアクティブ化、非アクティブ化、インストール、アンインストール、またはアップグレードを実装できる基本抽象クラスです。

  • Microsoft.SharePoint.SPFeatureReceiverProperties   フィーチャー定義またはフィーチャーの親オブジェクト用のイベント プロパティ (作成済みのフィーチャー インスタンスなど) にアクセスできるようにするクラスです。

フィーチャー準備イベント ハンドラー

フィーチャー準備ハンドラーを使用すると、フィーチャーのライフサイクルの中で発生するさまざまなイベントを処理する特定のコードを記述できます。SPFeatureReceiver クラスには、イベントを処理するための以下のメソッドがあります。

準備イベント ハンドラーを実装するには、SPFeatureReceiver から派生するクラスを作成し、これらのメソッドを実装します。親オブジェクトへのポインターが常に渡されるので、必要に応じてカスタマイズできます。フィーチャー レシーバーが含まれるアセンブリは、グローバル アセンブリ キャッシュ (GAC) に配置する必要があります。Feature.xml ファイルでは、最上位の Feature 要素の ReceiverAssembly 属性と ReceiverClass 属性を使用して、フィーチャー レシーバーを登録できます。次に例を示します。

<Feature Id="5E88AE4E-2ECB-4CC5-B9EC-9019250F5BC8"
  Title="Knowledge Base Infrastructure"
  Scope="Site"
  ReceiverAssembly="MS.Samples.SharePoint.KnowledgeBase, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d24e3c1752ded9ed"
ReceiverClass="MS.Samples.SharePoint.KnowledgeBase.KnowledgeBaseInstaller" 
  xmlns="https://schemas.microsoft.com/sharepoint/">

アクティブ化プロセス中にスローされる例外はユーザーに伝えられ、そのフィーチャーはアクティブ化されません。

フィーチャーが既にアクティブ化されているにもかかわらずユーザーが強制的にアクティブ化しようとする場合に対処するコードを記述してください。たとえば、フィーチャー レシーバーのイベント ハンドラーでリストを作成する場合は、そのリストが既に存在する場合にコードがエラーにならないことを確認してください。