この文脈で「非ジェネリックメソッドは型引数では使用できません」とはどういう意味ですか? 質問する

この文脈で「非ジェネリックメソッドは型引数では使用できません」とはどういう意味ですか? 質問する

次のクラスとメソッドがあります:

public class UserManager<TUser, TKey> : IDisposable
    where TUser : class, global::Microsoft.AspNet.Identity.IUser<TKey>
    where TKey : global::System.IEquatable<TKey> {

   public virtual Task<TUser> FindByIdAsync(TKey userId);

そして:

private ApplicationUserManager _userManager;
    public ApplicationUserManager UserManager
    {
        get
        {
            return _userManager ?? Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
        }
        set
        {
            _userManager = value;
        }
    }

public class ApplicationUserManager : UserManager<ApplicationUser, int>
public class ApplicationUser : IdentityUser<int, CustomUserLogin, CustomUserRole, CustomUserClaim>

このメソッドを次のように呼び出そうとしています:

var user = await UserManager.FindByIdAsync<ApplicationUser,int>(99);

次のエラーが発生します:

非ジェネリックメソッド

'Microsoft.AspNet.Identity.UserManager.FindByIdAsync(int)' は型引数では使用できません

ベストアンサー1

エラーが示すように、FindByIdAsync型パラメータは取りません。これらは宣言クラスに存在します。UserManager<TUser, TKey>

var user = await UserManager.FindByIdAsync(99);

おすすめ記事