2010-03-09 11 views
1

Nous avons plusieurs listes personnalisées, dont chacune a plusieurs récepteurs d'événements associés (bien que seulement un couple ait été réellement écrit à partir de maintenant). Ces récepteurs d'événements gèrent un mash-mash d'événements individuels et exécutent divers éléments de fonctionnalité. Ma question est de savoir comment les organiser dans une solution/un projet Visual Studio d'une manière logique. Quels récepteurs d'événements devraient avoir leur propre fonction/classe/dossier/projet/solution?Comment organiser les récepteurs d'événements SharePoint dans Visual Studio?

Actuellement, nous avons deux solutions, chacune utilisant simplement Visual Basic par défaut lors de la création d'un nouveau projet Event Receiver avec sa propre solution. L'autre a un seul projet, avec un dossier nommé d'après une liste particulière qui est définie pour gérer deux événements (ItemAdded et ItemUpdating) sur cette liste. Le dossier contient deux fichiers C#, chacun contenant sa propre classe avec une fonction pour ce récepteur d'événement particulier.

Mais si j'ai plusieurs récepteurs d'événements pour une liste, devrais-je les mettre dans un seul fichier? Ou dans des fichiers séparés dans le même dossier? Ou dans des projets séparés? Et si j'ai deux actions logiquement distinctes qui doivent être effectuées sur le même élément de liste dans le même événement, devrais-je avoir un récepteur d'événements qui effectue les deux actions, ou des récepteurs d'événements distincts pour chacun d'eux? Mon idée actuelle était d'avoir un dossier pour chaque liste, avec des fichiers séparés pour chaque récepteur d'événements, et d'utiliser un seul récepteur d'événements pour effectuer toutes les actions appropriées pendant cet événement (indépendant ou non). Je me demande simplement ce que serait une organisation de «pratiques exemplaires».

Répondre

0

Ceci est plus ou moins un point de vue personnel, car je n'ai pas vu de meilleures pratiques sur le sujet. Dans mes projets, je la structure suivante pour les listes et leurs classes de gestionnaire d'événement correspondant:

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... 

J'ai un fichier pour les événements de récepteur d'article et une classe pour la liste des événements du récepteur.
Dans les ItemEventReceiver.cs, j'ai tous ItemDeleting, ItemAdding etc., et dans les ListEventReceiver.cs je FieldAdding, FieldUpdated etc.

Une alternative serait de placer tout le code de récepteur d'événements/classes dans un dossier séparé structure, mais à mon avis, il est préférable de les avoir dans le même dossier que la définition de la liste. De cette façon, tout ce qui est lié à cette liste est au même endroit. En fin de compte, je pense que vous devez utiliser la structure qui fonctionne le mieux pour vous et votre équipe et être cohérent.