AFAIK, нет способа достичь того, что вы пытаетесь сделать.
Однако, решение было бы просто вызвать метод расширения.
public static class Extension
{
public static bool DoStuff(this Class stuff)
{
return false;
}
}
public class Class
{
public bool DontCallMe()
{
return this.DoStuff();
}
}
Class myClass = new Class();
myClass.DontCallMe();
Очевидно,это работает, только если вы можете изменить код вашего класса (что, я полагаю, вы не можете)
Если этот метод помечен как виртуальный, вы можете создать класс Wrapper, который переопределяет этот метод.
public static class Extension
{
public static bool DoStuff(this Class stuff)
{
return false;
}
}
public class Class : Base
{
public override bool DontCallMe()
{
return this.DoStuff();
}
}
public class Base
{
public virtual bool DontCallMe()
{
return false;
}
}
Другой подход - сделать то, что я описал в этом этом посте.