title: Interface with generic parameter vs Interface with generic methods
body: <p>Let's say I have such interface and concrete implementation</p>
  
  <pre><code>public interface IMyInterface&lt;T&gt;
  {
      T My();
  }
  
  public class MyConcrete : IMyInterface&lt;string&gt;
  {
      public string My()
      {
          return string.Empty;
      }
  }
  </code></pre>
  
  <p>So I create MyConcrete implementation for <code>strings</code>, I can have one more concrete implementation for <code>int</code>. And that's ok. But let's say, that I want to do the same thing, but with generic methods, so I have</p>
  
  <pre><code>public interface IMyInterface2
  {
      T My&lt;T&gt;();
  }
  
  public class MyConcrete2 : IMyInterface2
  {
      public string My&lt;string&gt;()
      {
          throw new NotImplementedException();
      }
  }
  </code></pre>
  
  <p>So I have the same <code>IMyInterface2</code>, but which defines generic behavior by means of <code>T My&lt;T&gt;()</code>. In my concrete class I want to implement <code>My</code> behavior, but for concrete data type - <code>string</code>. But C# doesn't allow me to do that. </p>
  
  <p>My question is why I cannot do that?
  In other words, if i can create concrete implementation of <code>MyInterface&lt;T&gt;</code> as <code>MyClass : MyInterface&lt;string&gt;</code> and stop genericness at this point, why I can't do that with generic method - <code>T My&lt;T&gt;()</code>?</p>