title: Why does ReSharper suggest that I make type parameter T contravariant?
body: <p>ReSharper suggests me to make type parameter T contravariant by changing this:</p>
  
  <pre><code>interface IBusinessValidator&lt;T&gt; where T: IEntity
  {
      void Validate(T entity);
  }
  </code></pre>
  
  <p>Into this:</p>
  
  <pre><code>interface IBusinessValidator&lt;in T&gt; where T: IEntity
  {
      void Validate(T entity);
  }
  </code></pre>
  
  <p>So what is different between <code>&lt;T&gt;</code> and <code>&lt;in T&gt;</code>? And what is the purpose of contravariant here?</p>
  
  <p>Let say I have <code>IEntity</code>, <code>Entity</code>, <code>User</code> and <code>Account</code> entities. Assuming that both <code>User</code> and <code>Account</code> have <code>Name</code> property that need to be validated.</p>
  
  <p>How can I apply the usage of contravariant in this example?</p>