📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の1版が非表示) | |||
| 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); | |||
} | } | ||
} | } | ||
| 120行目: | 168行目: | ||
== デバッグ方法 == | == デバッグ方法 == | ||
C# | C#ライブラリのデバッグ方法を、以下に記載する。<br> | ||
<br> | <br> | ||
# [ | * Rider | ||
# [C# デバッグ プロパティ]画面が開くので、画面上部にある[構成]プルダウンから[デバッグ]を選択する。 | *: 外部コードのデバッグは初期状態で有効化されている。<br>もし、デバッガにライブラリコードを無視させる場合は、以下に示す手順に従う。 | ||
# 画面左にある[デバッグ]を選択する。 | *# 外部コードのデバッグを無効にするには、[ファイル]メニューバー - [設定] - 設定画面の左ペインにある[ビルド、実行、デプロイ] - [デバッガー]を選択する。 | ||
# 画面右にある[開始動作]で次の手順を行う。 | *# 設定画面の右ペインにある[外部ソースのデバッグを可能にする]チェックボックスのチェックを外す。 | ||
#* .NET | *#: <br> | ||
#* .NET | *: ただし、このオプションを無効にしても、外部コードに移動してブレークポイントのみを設定することはできる。 | ||
#* .NET | *: しかし、外部コードのブレークポイントはデバッガによって無視されて、外部コードに入ることはできなくなる。 | ||
# コマンドライン引数が必要な場合、[コマンドライン引数]項目または[アプリケーション引数]項目に、必要なコマンドライン引数を入力する。 | *: <br> | ||
# [ファイル] - [選択した項目を保存]ボタンを押下して、変更を保存する。(または、[Ctrl] + [S]キーを押下する) | * Visual Studio | ||
*# [ソリューションエクスプローラー]において、C#ライブラリプロジェクトを右クリックして[プロパティ]を選択する。 | |||
*# [C# デバッグ プロパティ]画面が開くので、画面上部にある[構成]プルダウンから[デバッグ]を選択する。 | |||
*# 画面左にある[デバッグ]を選択する。 | |||
*# 画面右にある[開始動作]で次の手順を行う。 | |||
*#* .NET Frameworkの場合、[外部プログラムを起動する]を選択して、呼び出し元の実行ファイルのフルパスを入力する。 | |||
*#* .NET FrameworkでASP.NETの場合、[ブラウザーを開始時に使用するURL]を選択して、ローカルのASP.NETアプリのURLを入力する。 | |||
*#* .NET / .NET Coreの場合、[デバッグプロパティ]ページが異なる。<br>[起動]プルダウンから[実行可能ファイル]を選択して、[実行可能ファイル]項目に、呼び出し元の実行ファイルのフルパスを入力する。 | |||
*#: <br> | |||
*# コマンドライン引数が必要な場合、[コマンドライン引数]項目または[アプリケーション引数]項目に、必要なコマンドライン引数を入力する。 | |||
*# [ファイル] - [選択した項目を保存]ボタンを押下して、変更を保存する。(または、[Ctrl] + [S]キーを押下する) | |||
<br> | <br> | ||
C# | C#ライブラリプロジェクトを右クリックして、[スタートアッププロジェクトに設定]を選択して、デバッグを開始する。<br> | ||
デバッグでブレークポイントがヒットしない場合、自身のDLL出力(初期設定では、<project>\Debugディレクトリ)が、<br> | デバッグでブレークポイントがヒットしない場合、自身のDLL出力(初期設定では、<project>\Debugディレクトリ)が、<br> | ||
呼び出し元の実行ファイルで呼び出されている場所であることを確認する。<br> | 呼び出し元の実行ファイルで呼び出されている場所であることを確認する。<br> | ||