オブジェクトの型オブジェクト(System.Typeのインスタンス)を取得する方法を紹介します。
本記事に記載のコードでは、以下のusingディレクティブの記述が必要になります。
1 2 3 4 5 6 |
// using ディレクティブ using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Text; |
本文中では、usingの記述を省略しています。
目次
型オブジェクト(Type型のインスタンス)を取得する
リフレクション(Reflection)を使用するには、まず型のオブジェクトを取得します。
型オブジェクト(System.Type型のインスタンス)を取得(生成)する方法はいくつかあります。
型名(定義)から型を取得(生成)する
型名(定義)から型を取得する場合は、typeof演算子を使用します。
typeof演算子はパラメーター(引数)に型名(定義名)を取ります。
typeof演算子は型名に一致するSystem.Typeのインスタンスを返します。
1 2 3 4 5 6 7 8 9 10 |
// typeof演算子で型を取得 // System.Text.StringBuilderクラスの型を取得 Type typeOfStringBuilder = typeof(StringBuilder); // System.Collections.Generic.IList<object>インターフェースの型を取得 Type typeOfIListObject = typeof(IList<object>); // System.Drawing.Color構造体の型を取得 Type typeOfColor = typeof(Color); |
型を表す文字列から型を取得(生成)する
型を表す文字列から型を取得(生成)する場合は、TypeクラスのGetTypeメソッドを使用します。
TypeクラスのGetTypeメソッドのパラメーター(引数)には、型の「アセンブリの修飾名(AssemblyQualifiedName)」を指定します。
TypeクラスのGetTypeメソッドは、指定された文字列に一致するSystem.Typeのインスタンスを返します。
1 2 3 4 5 6 7 8 9 10 11 12 |
// TypeクラスのGetTypeメソッドで型を取得 // System.Data.DataSetクラスの型を取得 Type typeOfDataSet = Type.GetType("System.Data.DataSet, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"); // System.Text.StringBuilderクラスの型を取得 Type typeOfStringBuilder = Type.GetType("System.Text.StringBuilder, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089"); // System.DateTime構造体の型を取得 Type typeOfDateTime = Type.GetType("System.DateTime"); // または // Type typeOfDateTime = Type.GetType("System.DateTime, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089"); |
オブジェクトのインスタンスから型を取得(生成)する
オブジェクトのインスタンスから型を取得する場合は、GetTypeメソッドを使用します。
GetTypeメソッドはパラメーター(引数)なしで呼び出します。
GetTypeメソッドはオブジェクトのインスタンスの型(System.Type)を返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// インスタンスのGetTypeメソッドで型を取得 // System.Data.DataSetクラスの型を取得 DataSet dataSet = new DataSet(); Type typeOfDataSet = dataSet.GetType(); // System.Collections.Generic.IList<object>インターフェースの型を取得 IList<object> objectList = new List<object>(); Type typeOfIListObject = objectList.GetType(); // System.Drawing.Color構造体の型を取得 Color color = new Color(); Type typeOfColor = color.GetType(); |
型オブジェクトは型の変換処理や、リフレクション(Reflection)を利用したメタデータの操作などに使用できます。