この例を見つけようとしましたが、成功しなかったため、この質問をしました。
いくつかのコードから始めましょう。これが私のコードです:
class Dummy
{
public void DoDummyThings1()
{
Console.WriteLine("Sorry, I'm dummy 1...");
}
public void DoDummyThings2()
{
Console.WriteLine("Sorry, I'm dummy 2...");
}
public void DoDummyThings3()
{
Console.WriteLine("Sorry, I'm dummy 3...");
}
}
そして私のテストコード:
[TestClass]
public class UnitTest
{
private Dummy dum = new Dummy();
[TestInitialize()]
public void SetUp()
{
MethodInfo mi = typeof (UnitTest).GetMethod("TestDummy");
MethodBody mb = mi.GetMethodBody();
}
[TestMethod]
public void TestDummy()
{
this.dum.DoDummyThings1();
this.dum.DoDummyThings2();
this.dum.DoDummyThings3();
}
}
これが私がやろうとしていることです。各テストメソッドを実行する前に、テストメソッドを見て、Dummy クラスのメソッド DoDummyThings1、DoDummyThings2、および DoDummyThings3 が呼び出されるかどうかを確認したい。
これの目的は、呼び出される DoDummyThingsX メソッドに応じて、コードの奥深くに別の実装を挿入して、実行時に一部のクラスの動作を変更することです (インターフェイスの注入実装を別のものに交換します)。
誰かがこれを正しく行う方法を説明できますか (Cecil の最新バージョンまたは C# 用の何かを使用)。.dll ファイルを使用せずにこれを行う方法はありますか? (現在、これが私がこれを行う方法を見つけた唯一の方法ですが、ハードコードされた「MyDllName.dll」および「MyNamespace.MyClassName」として文字列を使用することはできません)
私がすでに知っている他のstackoverflowスレッド:
- メソッドがリフレクションを使用してメソッド内で呼び出されているかどうかを調べます
- メソッドでどのメソッドが呼び出されているかを判断する方法は?
- リフレクションを使用してメソッド内のコードを検査できますか?
完全な(しかし単純な)例(可能であれば)を手伝ってくれる人はいますか?ありがとうございました!