title: What does The non-generic method cannot be used with type arguments mean in this context?
body: <p>I have the following class and method:</p>
  
  <pre><code>public class UserManager&lt;TUser, TKey&gt; : IDisposable
      where TUser : class, global::Microsoft.AspNet.Identity.IUser&lt;TKey&gt;
      where TKey : global::System.IEquatable&lt;TKey&gt; {
  
     public virtual Task&lt;TUser&gt; FindByIdAsync(TKey userId);
  </code></pre>
  
  <p>and:</p>
  
  <pre><code>private ApplicationUserManager _userManager;
      public ApplicationUserManager UserManager
      {
          get
          {
              return _userManager ?? Request.GetOwinContext().GetUserManager&lt;ApplicationUserManager&gt;();
          }
          set
          {
              _userManager = value;
          }
      }
  
  public class ApplicationUserManager : UserManager&lt;ApplicationUser, int&gt;
  public class ApplicationUser : IdentityUser&lt;int, CustomUserLogin, CustomUserRole, CustomUserClaim&gt;
  </code></pre>
  
  <p>I am trying to call this method like this:</p>
  
  <pre><code>var user = await UserManager.FindByIdAsync&lt;ApplicationUser,int&gt;(99);
  </code></pre>
  
  <p>It gives me the error:</p>
  
  <p>The non-generic method </p>
  
  <blockquote>
    <p>'Microsoft.AspNet.Identity.UserManager.FindByIdAsync(int)'
    cannot be used with type arguments</p>
  </blockquote>