title: Can Extension-Methods overwrite instance methods?
body: <p>Is it possible to overwrite instance methods by an extension-methods? For example, I have an assembly (compiled, without sources) and I want to rewrite some behaviour.</p>
  
  <p>I created some code for test:</p>
  
  <pre><code>public class SomeClass
  {
      public void MyMethod()
      {
          Console.WriteLine("Instance method is called");
      }
  }
  
  public static class ExtMethods
  {
      public static void MyMethod(this SomeClass c)
      {
          Console.WriteLine("Extention method is called");
      }
  }
  </code></pre>
  
  <p>then I try to use:</p>
  
  <pre><code>SomeClass s = new SomeClass();
  s.MyMethod();
  </code></pre>
  
  <p>It's compiled successfully, IntelliSence marks this method as instance (extension method has another icon)</p>
  
  <p><img src="https://i.stack.imgur.com/7AwGC.jpg" alt="enter image description here"></p>
  
  <p>output says </p>
  
  <blockquote>
    <p>Instance method is called</p>
  </blockquote>
  
  <p>none note about extention method exists. So, no way to overwrite instance method, right?</p>
  
  <p><strong>Why the behavior of the compiler and VS is such non-informative?</strong> If I develop an extension-method and there exists already the same instance method (and I don't know about it), I can spend hours to understand why behavior is different than expected...</p>