Is it possible to do that in C# 3 or 4? Maybe with some reflection?
class Magic
{
[RunBeforeAll]
public void BaseMethod()
{
}
//runs Ba
I know it won't answer the question directly. But it's a good approach to use a decorator pattern to solve this problem to make your implementation stay clean.
Create an interface
public interface IMagic
{
public void Method1()
{
}
public void Method2()
{
}
}
Create implementation
public class Magic : IMagic
{
public void Method1()
{
}
public void Method2()
{
}
}
Create Decorator
public class MagicDecorator : IMagic
{
private IMagic _magic;
public MagicDecorator(IMagic magic)
{
_magic = magic;
}
private void BaseMethod()
{
// do something important
}
public void Method1()
{
BaseMethod();
_magic.Method1();
}
public void Method2()
{
BaseMethod();
_magic.Method2();
}
}
Usage
var magic = new MagicDecorator(new Magic());
magic.Method1();
magic.Method2();