13,009
回編集
| 57行目: | 57行目: | ||
<br> | <br> | ||
<syntaxhighlight lang="c#"> | <syntaxhighlight lang="c#"> | ||
// ファイル名を使用する場合 | |||
using System; | using System; | ||
using System.Reflection; | using System.Reflection; | ||
| 64行目: | 66行目: | ||
static void Main() | static void Main() | ||
{ | { | ||
// | // アセンブリのファイル名を指定してアセンブリを読み込む | ||
// ライブラリ名のみを記述する場合、実行バイナリと同階層のディレクトリにライブラリが存在すること | // ライブラリ名のみを記述する場合、実行バイナリと同階層のディレクトリにライブラリが存在すること | ||
var assembly = Assembly.LoadFrom("<ライブラリ名 または ライブラリのパス>"); | var assembly = Assembly.LoadFrom("<ライブラリ名 または ライブラリのパス>"); | ||
// モジュールを取得する | |||
var module = assembly.GetModule("<ライブラリ名>"); | |||
// クラスの完全修飾名(アセンブリ内のクラスの型)を取得 | // クラスの完全修飾名(アセンブリ内のクラスの型)を取得 | ||
// <名前空間名>.<クラス名> | // <名前空間名>.<クラス名> | ||
// 上記のサンプルライブラリの場合 --> var sampleType = assembly.GetType("SampleLibrary.SampleClass"); | // 上記のサンプルライブラリの場合 --> var sampleType = assembly.GetType("SampleLibrary.SampleClass"); | ||
var sampleType = | var sampleType = module.GetType("<名前空間名>.<クラス名>"); | ||
if (sampleType != null) | if (sampleType != null) | ||
| 114行目: | 119行目: | ||
Console.WriteLine("Class not found."); | Console.WriteLine("Class not found."); | ||
} | } | ||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
// アセンブリ名を使用する場合 | |||
using System; | |||
using System.Reflection; | |||
class Program | |||
{ | |||
static void Main() | |||
{ | |||
// アセンブリのファイル名を指定してアセンブリを読み込む | |||
// ライブラリ名のみを記述する場合、実行バイナリと同階層のディレクトリにライブラリが存在すること | |||
// 上記のサンプルライブラリの場合 --> var assembly = Assembly.Load("SampleLibrary"); | |||
var assembly = Assembly.Load("<アセンブリ名>"); | |||
// クラスの完全修飾名(アセンブリ内のクラスの型)を取得 | |||
// <名前空間名>.<クラス名> | |||
// 上記のサンプルライブラリの場合 --> var sampleType = assembly.GetType("SampleLibrary.SampleClass"); | |||
var sampleType = module.GetType("<名前空間名>.<クラス名>"); | |||
// クラスのメソッド名を取得 | |||
// 上記のサンプルライブラリの場合 --> var method = sampleType.GetMethod("SampleMethod"); | |||
var method = sampleType.GetMethod("<メソッド名>"); | |||
// 通常のクラスの場合 | |||
// 例: コンストラクタへ引数を渡す場合 --> var instance = Activator.CreateInstance(sampleType, <コンストラクタの引数 1>, <コンストラクタの引数 2>, ...); | |||
// 上記のサンプルライブラリの場合 --> var instance = Activator.CreateInstance(sampleType); | |||
// ただし、Staticクラスの場合は不要 | |||
var instance = Activator.CreateInstance(sampleType); | |||
// メソッドに引数がある場合 | |||
// 例: 引数がint, stringの2つ存在する場合 --> var args = new object[] { 5, "hoge" }; | |||
// 上記のサンプルライブラリの場合 --> var args = new object[] { 10, 20 }; | |||
var args = new object[] { <引数1>, <引数2>, ... }; | |||
// メソッドを実行 | |||
// 例1: メソッドに引数が存在しない場合 --> var result = method.Invoke(instance, null); | |||
// 例2: メソッドに引数と戻り値が存在しない場合 --> method.Invoke(instance, null); | |||
var result = method.Invoke(instance, args); | |||
} | } | ||
} | } | ||