Возможно ли это сделать в С# 3 или 4? Может быть, с некоторым отражением?
class Magic
{
[RunBeforeAll]
public void BaseMethod()
{
}
//runs BaseMethod before being executed
public void Method1()
{
}
//runs BaseMethod before being executed
public void Method2()
{
}
}
ИЗМЕНИТЬ
Для этого есть альтернативное решение, сделайте Magic
singleton и поместите свой код в getter статического экземпляра. Вот что я сделал:
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()
{
}
}