Données de cache

Vous pouvez mettre en cache des objets de données dans une personnalisation au niveau du document afin que les données soient accessibles hors connexion ou sans ouvrir Microsoft Bureau Word ou Microsoft Bureau Excel. Pour mettre en cache un objet, l’objet doit avoir un type de données qui répond à certaines exigences. De nombreux types de données courants dans le .NET Framework répondent à ces exigences, notamment String, DataSetet DataTable.

S’applique à : les informations contenues dans cette rubrique s’appliquent aux projets au niveau du document pour Excel et Word. Pour plus d’informations, consultez Fonctionnalités disponibles par application Office lication et le type de projet.

Il existe deux façons d’ajouter un objet au cache de données :

Conditions requises pour les objets de données à mettre en cache

Pour mettre en cache un objet de données dans votre solution, l’objet doit répondre à ces exigences :

  • Être un champ public en lecture/écriture d’un élément hôte, tel que les classes ou ThisWorkbook les ThisDocument classes.

  • Il ne s’agit pas d’un indexeur ou d’une autre propriété paramétrable.

    En outre, l’objet de données doit être sérialisable par la XmlSerializer classe, ce qui signifie que le type de l’objet doit avoir ces caractéristiques :

  • Être un type public.

  • Avoir un constructeur public sans paramètres.

  • N’exécutez pas de code qui nécessite des privilèges de sécurité supplémentaires.

  • Exposez uniquement les propriétés publiques en lecture/écriture (d’autres propriétés seront ignorées).

  • Ne pas exposer de tableaux multidimensionnels (les tableaux imbriqués sont acceptés).

  • Ne retourne pas d’interfaces à partir de propriétés et de champs.

  • N’implémentez IDictionary pas si une collection.

    Lorsque vous cachez un objet de données, le runtime Visual Studio Tools pour Office sérialise l’objet dans une chaîne XML stockée dans une partie XML personnalisée dans le document. Pour plus d’informations, consultez vue d’ensemble des composants XML personnalisés.

Limites de taille des données mises en cache

Il existe certaines limites à la quantité totale de données que vous pouvez ajouter au cache de données dans un document et à la taille de n’importe quel objet individuel dans le cache de données. Si vous dépassez ces limites, l’application peut se fermer de manière inattendue lorsque les données sont enregistrées dans le cache de données.

Pour éviter ces limites, suivez ces instructions :

  • N’ajoutez aucun objet de plus de 10 Mo au cache de données.

  • N’ajoutez pas plus de 100 Mo de données totales au cache de données dans un document unique.

    Il s’agit de valeurs approximatives. Les limites exactes dépendent de plusieurs facteurs, notamment la RAM disponible et le nombre de processus en cours d’exécution.

Contrôler le comportement des objets mis en cache

Pour mieux contrôler le comportement d’un objet mis en cache, vous pouvez implémenter l’interface ICachedType sur le type de l’objet mis en cache. Par exemple, vous pouvez implémenter cette interface si vous souhaitez contrôler la façon dont l’utilisateur est averti lorsque l’objet a été modifié. Pour obtenir des exemples de code qui montrent comment implémenterICachedType, consultez la ControlCollection classe dans l’exemple de contrôles dynamiques Excel et l’exemple de contrôles dynamiques Word dans Bureau exemples de développement et procédures pas à pas.

Conserver les modifications apportées aux données mises en cache dans des documents protégés par mot de passe

Si vous mettez en cache des objets de données dans un document protégé par un mot de passe, les modifications apportées aux données mises en cache ne sont pas enregistrées. Vous pouvez enregistrer les modifications apportées aux données mises en cache en remplaçant deux méthodes. Remplacez ces méthodes pour supprimer temporairement la protection lorsque le document est enregistré, puis réappliquez la protection une fois l’opération d’enregistrement terminée.

Pour plus d’informations, consultez Guide pratique pour mettre en cache des données dans un document protégé par mot de passe.

Empêcher la perte de données lors de l’ajout de valeurs Null au cache de données

Lorsque vous ajoutez des objets au cache de données, tous les objets mis en cache doivent être initialisés en une valeur non null avant que le document soit enregistré et fermé. Si un objet mis en cache a une valeur Null lorsque le document est enregistré et fermé, le runtime Visual Studio Tools pour Office supprime automatiquement tous les objets mis en cache du cache de données.

Si vous ajoutez un objet avec une valeur Null au cache de données à l’aide de l’attribut au moment du CachedAttribute design, vous pouvez utiliser la ServerDocument classe pour initialiser les objets de données mis en cache avant l’ouverture du document. Cela est utile si vous souhaitez initialiser les données mises en cache sur un serveur sans Word ou Excel installé, avant l’ouverture du document par un utilisateur final. Pour plus d’informations, consultez Access data in documents on the server.