C#3または4でそれを行うことは可能ですか?多少の反省があるかもしれませんか?クラスのすべてのメソッドの前にメソッドを実行する
class Magic
{
[RunBeforeAll]
public void BaseMethod()
{
}
//runs BaseMethod before being executed
public void Method1()
{
}
//runs BaseMethod before being executed
public void Method2()
{
}
}
EDIT
このための代替ソリューションがあり、Magic
シングルトンを作成し、静的インスタンスのゲッターにあなたのコードを置きます。これは私がやったことです:
public class Magic
{
private static Magic magic = new Magic();
public static Magic Instance
{
get
{
magic.BaseMethod();
return magic;
}
}
public void BaseMethod()
{
}
//runs BaseMethod before being executed
public void Method1()
{
}
//runs BaseMethod before being executed
public void Method2()
{
}
}
コンストラクタはどうですか? – JConstantine
コンストラクタを使うのは解決策ではありません。なぜなら、もし私が1つのインスタンスの2つのメソッドを実行していたら、一度実行するbasemethodしか得られないからです。また、静的インスタンスにはあまり適していません。 –
これを行うには、 'dynamic'を使用し、[' IDynamicMetaObjectProvider'](http://msdn.microsoft.com/en-us/library/system.dynamic.idynamicmetaobjectprovider.aspx)を実装します。これにより、バインド中にメソッドを実行する前に発生する独自のコードを実行できます。注:この提案は好奇心として提供されています。それは実際にあなたの問題を解決する良い方法ではありません。 – Brian