1

いくつかのカスタム リストがあり、それぞれにいくつかのイベント レシーバーが関連付けられています (ただし、現時点で実際に作成されているのは 2 つだけです)。このイベント レシーバーは、個々のイベントの寄せ集めを処理し、さまざまな機能を実行します。私の質問は、理にかなった方法で Visual Studio ソリューション/プロジェクトでそれらを整理する方法です。独自の関数/クラス/フォルダー/プロジェクト/ソリューションを持つ必要があるイベント レシーバーはどれですか?

現在、2 つのソリューションがあり、それぞれ独自のソリューションで新しいイベント レシーバー プロジェクトを作成するときに Visual Studio の既定値を使用しています。もう 1 つのプロジェクトには 1 つのプロジェクトがあり、特定のリストにちなんで名付けられた 1 つのフォルダーがあり、そのリストで 2 つのイベント (ItemAdded と ItemUpdating) を処理するように設定されています。このフォルダーには 2 つの C# ファイルが含まれており、それぞれのファイルには、特定のイベント レシーバー用の 1 つの関数を持つ独自のクラスが含まれています。

しかし、1 つのリストに複数のイベント レシーバーがある場合、それらを 1 つのファイルに入れる必要がありますか? または、同じフォルダー内の別のファイルに分けますか? それとも別々のプロジェクトに?また、同じイベントの同じリスト アイテムに対して実行する論理的に異なる 2 つのアクションがある場合、両方のアクションを実行する 1 つのイベント レシーバーを用意する必要がありますか?

私が現在考えているのは、リストごとにフォルダーを作成し、イベント レシーバーごとに個別のファイルを用意し、単一のイベント レシーバーを使用して、そのイベント中に適切なアクション (独立しているかどうかにかかわらず) を実行することでした。「ベストプラクティス」のような組織はどうなるのだろうと思っています。

4

1 に答える 1

0

これは多かれ少なかれ個人的な見解であり、この件に関するベスト プラクティスは見たことがありません。私のプロジェクトでは、リストとそれに対応するイベント ハンドラー クラスの構造を次のようにしています。

12  
|- TEMPLATE  
|-- FEATURES  
|--- My Feature  
|---- CustomList1  
|----- Allitems.aspx  
|----- DispForm.aspx  
|----- EditForm.aspx  
|----- ListDefinition.xml  
|----- ItemEventReceiver.cs  
|----- ListEventReceiver.cs  
|----- schema.xml  
|----- Etc, etc...  
|---- CustomList2  
|----- Allitems.aspx  
|----- Etc, etc...  

アイテム レシーバー イベント用のファイルと、リスト レシーバー イベント用のクラスが 1 つあります。
ItemEventReceiver.cs には、すべての ItemDeleting、ItemAdding などがあります。ListEventReceiver.cs には、FieldAdding、FieldUpdated などがあります。

1 つの代替方法は、すべてのイベント レシーバー コード/クラスを別のフォルダー構造に配置することですが、私の意見では、それらをリスト定義と同じフォルダーに配置することをお勧めします。そうすれば、そのリストに関連するすべてが 1 か所にまとめられます。

最終的には、自分とチームにとって最適な構造を使用し、一貫性を保つ必要があると思います。

于 2010-03-09T11:29:00.773 に答える