3

A非常に標準的な難読化されていないクラスの束を含むアセンブリがあるとします。

Bアセンブリにあるすべてのメソッドを含むある種の「モック」アセンブリをプログラムで作成する方法はありますAが、アセンブリ B のこれらすべてのメソッドには、メソッドの最初と最後にユーザーコードを挿入する必要があります。アセンブリBを実行すると、通常どおりに実行され、挿入されたユーザー コードが実行されます。挿入されたコードは、プロファイリングの目的で使用されます。どうにかして達成することは可能ですか (私はすでに ANTS プロファイラーを使用しているため、プロファイリング ツールは必要ありません。指定された方法で問題を解決できるかどうかだけに関心があります)

ありがとうございました!

編集

皆さん、私は別のアプリケーション ( http://codeinject.codeplex.com/に似ています) を書くことについて話しているのですが、入力として任意の .net アセンブリを取り、次のものを含む他のアセンブリを生成することができます:

  1. 最初のもののすべてのコード
  2. アセンブリのすべてのメソッドに挿入された特別なユーザーコード...まあ、「モック」されています

次のコードがあるとします。

AssemblyA.dll:

class Test
{
    void Action1(int someArgument)
    {
       ...
    }

    void Action2(bool someBool)
    {
       ...
    }

    public void DoSomeAction()
    {
        Action1(123);
        ...
        Action2(true)
    }
}

インジェクター.dll:

public class Injector: IInjector
{
    Dictionary<String, Int32> profiler = new Dictionary<String, Int32>();

    void BeforeInvoke(IMethodCall call)
    {
       Console.WriteLine("A method {0} being called", call.Method.Name);
    }

    void AfterInvoke(IMethodCall call)
    {
       Console.WriteLine("A method {0} was called, duration {1}", call.Method.Name, call.Duration);
    }
}

これにより、次のことが可能になります。

> inject.exe AssemblyA.dll Injector.dll AssemblyB.dll

AssemblyB.dll を参照し、運用環境で使用すると、AssemblyA.dll が行うことはすべて実行されますが、パフォーマンス ログも実行され、後でレビューして、より開発的な方法で分析することができます。

私の質問:

どこから探し始めるべきですか?

4

1 に答える 1