次の方法で共有


TypeDescriptor クラス

属性、プロパティ、イベントなど、コンポーネントの特性に関する情報を提供します。このクラスは継承できません。

名前空間: System.ComponentModel
アセンブリ: System (system.dll 内)

構文

'宣言
Public NotInheritable Class TypeDescriptor
'使用
Dim instance As TypeDescriptor
public sealed class TypeDescriptor
public ref class TypeDescriptor sealed
public final class TypeDescriptor
public final class TypeDescriptor

解説

.NET Framework では、System.Reflection 名前空間で提供されるリフレクション API と TypeDescriptor クラスという 2 とおりの方法で型のメタデータにアクセスできます。リフレクションの基盤は、ルート クラス ObjectGetType メソッドで確立されるため、リフレクションはすべての型で使用できる汎用機構です。リフレクションによって返される型に関する情報は、対象の型をコンパイルした後に変更できないという点で拡張性がありません。詳細については、リフレクション のトピックを参照してください。

これに対して、TypeDescriptor はコンポーネントに対して拡張性のある検査機構です。これらのクラスは、IComponent インターフェイスを実装しています。リフレクションとは異なり、このクラスはメソッドに関する検査は行いません。TypeDescriptor は、対象のコンポーネントの Site を通じて利用できる複数のサービスによって動的に拡張できます。これらのサービスを次の表に示します。

サービス名

説明

IExtenderProvider

ToolTip などの別のクラスがコンポーネントに追加のプロパティを提供できるようにします。

ITypeDescriptorFilterService

別のオブジェクトがコンポーネントによって公開される標準のメタデータを変更できるようにします。

ICustomTypeDescriptor

TypeDescriptor の標準の検査機構を置き換え、クラスが独自のメタデータを完全かつ動的に指定できるようにします。

TypeDescriptor によって提供される機能拡張を使用すると、コンポーネントのデザイン時の表現を実行時の実際の表現と区別できるため、TypeDescriptor は、デザイン時のインフラストラクチャを構築する際に役立ちます。

TypeDescriptor のすべてのメソッドは static です。このクラスのインスタンスは作成できないため、このクラスを継承することはできません。

プロパティとイベントの値を設定するには、コンポーネント クラスで指定する方法と、デザイン時に変更する方法の 2 とおりあります。2 とおりの方法でこれらの値を設定できるため、TypeDescriptor のオーバーロードされたメソッドには、クラス型またはオブジェクトのインスタンスという 2 種類のパラメータの型を指定できます。

TypeDescriptor の情報にアクセスする必要があり、オブジェクトのインスタンスがある場合は、コンポーネントを呼び出すメソッドを使用します。クラス型を呼び出すメソッドは、オブジェクトのインスタンスがない場合にだけ使用します。

処理速度向上のため、プロパティとイベントは TypeDescriptor によってキャッシュされます。通常、これらはオブジェクトの有効期間を通じて一定です。ただし、拡張プロバイダやデザイナは、オブジェクトに関する一連のプロパティを変更できます。その場合、Refresh メソッドを呼び出してキャッシュを更新する必要があります。

注意

このクラスに適用される HostProtectionAttribute 属性の Resources プロパティの値は、SharedState です。HostProtectionAttribute は、デスクトップ アプリケーション (一般的には、アイコンをダブルクリック、コマンドを入力、またはブラウザに URL を入力して起動するアプリケーション) には影響しません。詳細については、HostProtectionAttribute クラスのトピックまたは「SQL Server プログラミングとホスト保護属性」を参照してください。

継承階層

System.Object
  System.ComponentModel.TypeDescriptor

スレッド セーフ

この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。

プラットフォーム

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。

バージョン情報

.NET Framework

サポート対象 : 2.0、1.1、1.0

.NET Compact Framework

サポート対象 : 2.0、1.0

参照

関連項目

TypeDescriptor メンバ
System.ComponentModel 名前空間
EventDescriptor クラス
PropertyDescriptor クラス
System.Reflection
IComponent インターフェイス
ISite インターフェイス

その他の技術情報

型記述子の概要
リフレクション