キャッシュ データCache data

データは、オフライン、または Microsoft Office Word または Microsoft Office Excel を開くことがなくアクセスできるように、ドキュメント レベル カスタマイズ内のデータ オブジェクトをキャッシュできます。You can cache data objects in a document-level customization so that the data can be accessed offline, or without opening Microsoft Office Word or Microsoft Office Excel. オブジェクトをキャッシュするには、オブジェクトのデータ型を特定の要件を満たす必要があります。To cache an object, the object must have a data type that meets certain requirements. .NET Framework の多くの一般的なデータ型など、これらの要件を満たしているStringDataSet、およびDataTableします。Many common data types in the .NET Framework meet these requirements, including String, DataSet, and DataTable.

適用対象: このトピックの情報は、ドキュメントに適用されます-Excel および Word のレベルのプロジェクト。Applies to: The information in this topic applies to document-level projects for Excel and Word. 詳細については、「Office アプリケーションおよびプロジェクトの種類で使用できる機能」を参照してください。For more information, see Features available by Office application and project type.

データ キャッシュにオブジェクトを追加する 2 つの方法はあります。There are two ways to add an object to the data cache:

データ オブジェクトをキャッシュに保存するための要件Requirements for data objects to be cached

ソリューション内のデータ オブジェクトをキャッシュするには、オブジェクトは、これらの要件を満たす必要があります。To cache a data object in your solution, the object must meet these requirements:

  • 読み取り/書き込みのパブリック フィールドまたは、ホスト項目のプロパティであるなど、ThisDocumentまたはThisWorkbookクラス。Be a read/write public field or property of a host item, such as the ThisDocument or ThisWorkbook classes.

  • インデクサーまたはその他のパラメーター化されたプロパティ。Not be an indexer or other parameterized property.

    さらに、データ オブジェクトがによってシリアル化可能にする必要があります、XmlSerializerクラスで、オブジェクトの型はこれらの特性である必要があります。In addition, the data object must be serializable by the XmlSerializer class, which means the type of the object must have these characteristics:

  • パブリック型であります。Be a public type.

  • パラメーターなしのパブリック コンス トラクターがあります。Have a public constructor with no parameters.

  • 追加のセキュリティ特権を必要とするコードを実行できません。Not execute code that requires additional security privileges.

  • 読み取り/書き込みパブリックのプロパティ (その他のプロパティは無視されます) のみを公開します。Expose only read/write public properties (other properties will be ignored).

  • (入れ子になった配列が受け入れられます)、多次元配列を公開しません。Not expose multi-dimensional arrays (nested arrays are accepted).

  • プロパティやフィールドからインターフェイスを返しません。Not return interfaces from properties and fields.

  • 実装していませんIDictionary場合コレクション。Not implement IDictionary if a collection.

    データ オブジェクトをキャッシュするときに、 Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime 、オブジェクトに格納されている XML 文字列にシリアル化、カスタム XML 部分ドキュメント。When you cache a data object, the Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime serializes the object into an XML string that is stored in a custom XML part in the document. 詳細については、次を参照してください。カスタム XML 部分の概要します。For more information, see Custom XML parts overview.

キャッシュされたデータ サイズの制限Cached data size limits

データ キャッシュ内の個別のオブジェクトのサイズと、ドキュメント内のデータ キャッシュに追加できるデータの総量をいくつかの制限があります。There are some limits to the total amount of data you can add to the data cache in a document, and to the size of any individual object in the data cache. これらの制限を超えると、データ キャッシュにデータが保存された場合に、アプリケーションが予期せず閉じることがあります。If you exceed these limits, the application might close unexpectedly when the data is saved to the data cache.

これらの制限を避けるためには、次のガイドラインに従います。To avoid these limits, follow these guidelines:

  • データ キャッシュには、10 MB より大きい任意のオブジェクトを追加しないでください。Do not add any object larger than 10 MB to the data cache.

  • 1 つのドキュメント内のデータ キャッシュには、100 MB を超えるデータの合計を追加しないでください。Do not add more than 100 MB of total data to the data cache in a single document.

    これらは、概算値です。These are approximate values. 正確な制限は、使用可能な RAM および実行中のプロセス数など、いくつかの要因によって異なります。The exact limits depend on several factors, including the available RAM and the number of running processes.

キャッシュされたオブジェクトの動作の制御Control the behavior of cached objects

実装にキャッシュされたオブジェクトの動作を制御することができます、ICachedTypeキャッシュされたオブジェクトの種類のインターフェイス。To gain more control over the behavior of a cached object, you can implement the ICachedType interface on the type of the cached object. たとえば、オブジェクトが変更された場合に、ユーザーに通知する方法を制御する場合は、このインターフェイスを実装できます。For example, you can implement this interface if you want to control how the user is notified when the object has been changed. 実装する方法を示すコード例についてICachedTypeを参照してください、ControlCollection動的コントロールのサンプルの Excel と Word で動的コントロールのサンプル クラスOffice 開発のサンプルとチュートリアルします。For code examples that demonstrate how to implement ICachedType, see the ControlCollection class in the Excel Dynamic Controls Sample and Word Dynamic Controls Sample in Office development samples and walkthroughs.

パスワードで保護されたドキュメントでキャッシュされたデータへの変更を永続化します。Persist changes to cached data in password-protected documents

パスワードで保護されているドキュメント内のデータ オブジェクトをキャッシュする場合、キャッシュされたデータへの変更は保存されません。If you cache data objects in a document that is protected with a password, changes to the cached data are not saved. 2 つのメソッドをオーバーライドすることで、キャッシュされたデータに変更を保存できます。You can save changes to the cached data by overriding two methods. ドキュメントが保存されると、保護を一時的に削除するこれらのメソッドをオーバーライドし、保存した後に保護を再度適用操作が完了しました。Override these methods to temporarily remove the protection when the document is saved, and then reapply the protection after the save operation is complete.

詳細については、「方法 :パスワードで保護されたドキュメント内のデータをキャッシュします。For more information, see How to: Cache data in a password-protected document.

Null 値をデータ キャッシュに追加するときにデータ損失を防止します。Prevent data loss when adding null values to the data cache

キャッシュされたオブジェクトのすべて必要があります以外に初期化するオブジェクトをデータ キャッシュに追加するときにnull値、ドキュメントを保存して閉じる前にします。When you add objects to the data cache, all of the cached objects must be initialized to a non-null value before the document is saved and closed. 任意のキャッシュされたオブジェクトがある場合、 null値、ドキュメントを保存して閉じられたときに、Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtimeデータ キャッシュから削除するすべてのキャッシュされたオブジェクトに自動的にします。If any cached object has a null value when the document is saved and closed, the Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime will automatically remove all of the cached objects from the data cache.

持つオブジェクトを追加する場合、 null値を使用して、データ キャッシュをCachedAttribute属性、デザイン時に使用することができます、ServerDocumentドキュメントが開かれる前に、キャッシュされたデータを初期化するためにクラスがオブジェクトします。If you add an object with a null value to the data cache by using the CachedAttribute attribute at design time, you can use the ServerDocument class to initialize the cached data objects before the document is opened. これは、Word または Excel ドキュメントをエンドユーザーが開く前にインストールされていないサーバー上のキャッシュされたデータの初期化に使用する場合に便利です。This is useful if you want to initialize the cached data on a server without Word or Excel installed, before the document is opened by an end user. 詳細については、次を参照してください。サーバー上のドキュメント内のデータ アクセスします。For more information, see Access data in documents on the server.

関連項目See also