.NETのConditional Attributeでは、コンパイル時にメソッドの呼び出しを無効にすることができます。私は基本的に同じ正確なことを、実行時に探しています。私はAOPフレームワークにこのようなものがあるはずですが、私はその名前が分からないので、サポートされているかどうかわかりません。実行時に属性を使用してメソッド呼び出しを条件付きで制御できますか?
ですから、例えば、私はこの
[RuntimeConditional("Bob")]
public static void M() {
Console.WriteLine("Executed Class1.M");
}
//.....
//Determines if a method should execute.
public bool RuntimeConditional(string[] conditions) {
bool shouldExecute = conditions[0] == "Bob";
return shouldExecute;
}
ような何かをしたいと思いますので、これまでのコードでMメソッドの呼び出しがある場合、それは最初RuntimeConditionalを呼び出して渡すでしょうボブMを実行するかどうかを決定します。
あなたの例では、どのようなコードでMを実行できますか?どのようなコードで実行されないのですか?代わりに何が起こると思いますか? – Stobor
RuntimeConditionalメソッドは、実行するかどうかを制御します。現在、Bobはハードコードされているので、常に実行されます。 RuntimeConditionalメソッドの文字列Bobは、メソッドが呼び出されるかどうかを調べるために、設定ファイル/データベースフィールドから引き出すためのコードに置き換えられます。 – Bob
Trace属性のOnEntryオーバーライドに例外をスローするだけで済みます。あなたが探していたものではありませんが、メソッドが実行されなくなります。 –