Одна вещь, которую вы могли бы сделать, это реализовать нестатические версии методов через явно реализованный интерфейс , например:
public interface ITest
{
string Foo();
}
// your class
public class Test : ITest
{
//original, static version of Foo
public static string Foo()
{
return "foo";
}
// Foo reimplemented as a non-static method
// note that you need to implement ITest explicitly
// for it to compile
string ITest.Foo()
{
return "foo";
}
}
Это компилируется и работает, как и ожидалось, за исключением того, чтонестатические методы могут быть вызваны только через интерфейс, например:
ITest t = new Test(); //assigning to a variable of type ITest
Console.WriteLine(t.Foo()); // writes "foo"
Console.WriteLine(Test.Foo()); // and calling the static method still works too