Utilisation de SetColumns pour énumérer efficacement les éléments d’un dossier
Cet exemple montre comment améliorer les performances de l'énumération de la collection Items à l'aide de la méthode SetColumns(String) pour mettre en cache certaines propriétés de chaque élément de la collection.
Exemple
Remarque
L’exemple de code suivant est un extrait de programmation d’Applications pour Microsoft Office Outlook 2007.
Pour énumérer les éléments d'une collection, utilisez la méthode SetColumns pour mettre en cache des propriétés sur la collection Items. SetColumns prend un argument qui est une chaîne délimitée par des virgules, représentant des noms de propriétés. Une fois que tous les éléments d'une collection ont été énumérés, appelez la méthode ResetColumns() pour effacer le cache de propriétés.
Dans l’exemple de code suivant, EnumerateContactsWithSetColumns utilise la méthode SetColumns pour mettre en cache les propriétés FileAs, CompanyName et JobTitle des éléments du dossier Contacts. Nous vous recommandons de tester les chaînes vides ou une référence nulle dans la restriction.
Notez qu’un dossier Outlook peut contenir des éléments de différents types. Cet exemple de code permet d’utiliser la classe d’assistance OutlookItem, définie dans l’article Créer une classe d’assistance pour accéder aux membres d’un élément courant Outlook, pour appeler facilement la propriété OutlookItem.Class et vérifier la classe de message de chaque élément du sous-ensemble d’éléments filtrés dans le dossier, avant d’assumer que l’élément est un contact.
Si vous utilisez Visual Studio pour tester cet exemple de code, vous devez d’abord ajouter une référence au composant Bibliothèque d’objets Microsoft Outlook 15.0 et spécifier la variable lorsque vous importez l’espace de noms Microsoft.Office.Interop.Outlook. L’instruction using ne doit pas se produire juste avant les fonctions de l’exemple de code, mais doit être ajoutée avant la déclaration publique. La ligne de code suivante montre comment effectuer l’importation et l’affectation dans C#.
using Outlook = Microsoft.Office.Interop.Outlook;
private void EnumerateContactsWithSetColumns()
{
// Obtain Contacts folder
Outlook.Folder folder =
Application.Session.GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderContacts)
as Outlook.Folder;
string filter = "Not([CompanyName] Is Null)" +
" AND Not([JobTitle] Is Null)";
Outlook.Items items = folder.Items.Restrict(filter);
items.SetColumns("FileAs, CompanyName, JobTitle");
for (int i = 1; i <= items.Count; i++)
{
// Create an instance of OutlookItem
OutlookItem myItem = new OutlookItem(items[i]);
if (myItem.Class == Outlook.OlObjectClass.olContact)
{
// Use InnerObject to return ContactItem
Outlook.ContactItem contact =
myItem.InnerObject as Outlook.ContactItem;
StringBuilder sb = new StringBuilder();
sb.AppendLine(contact.FileAs);
sb.AppendLine(contact.CompanyName);
sb.AppendLine(contact.JobTitle);
sb.AppendLine();
Debug.WriteLine(sb.ToString());
}
}
items.ResetColumns();
}