Let\'s go straight to it :
Old code :
public interface IFoo {}
public class Foo : IFoo {}
...
public static IFoo Bar() { return new Foo(); }
<
You could have problems with people who have created unit tests around your code. Because it's static people could have created a FooAdapater as follows:-
public class FooAdapater(){
public IFoo GetFoo() { Return your static Bar; }
}
They could then create a mocked foo adapter than returns a mocked foo. Your code would break this scenario.
So, no it's not binary compatible :-)