1

この例を見つけようとしましたが、成功しなかったため、この質問をしました。

いくつかのコードから始めましょう。これが私のコードです:

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スレッド:

完全な(しかし単純な)例(可能であれば)を手伝ってくれる人はいますか?ありがとうございました!

4

1 に答える 1