泛型类型BaseUser使用报错:需传入1个类型参数
解决「使用泛型类型BaseUser需要1个参数」的错误
这个错误其实很好理解——你的BaseUser<T>是个泛型抽象类,它必须带着明确的类型参数才能被继承,就像你用List的时候得写List<string>而不是只写List一样。你现在的JwtUser直接继承BaseUser,编译器不知道该给BaseUser<T>的T指定什么类型,所以报错了。
下面给你两种常见的解决思路,根据你的业务需求选就行:
方案1:给BaseUser指定具体的类型参数
如果你的JwtUser的GetUser()方法就是要返回JwtUser自身的实例,那直接在继承时把T指定为JwtUser就行,然后实现抽象方法:
public class JwtUser : BaseUser<JwtUser> { public string Sub { get; set; } // 实现BaseUser中定义的抽象方法 public override JwtUser GetUser() { return this; // 这里可以根据实际业务逻辑返回对应的实例,比如从数据库获取等 } }
方案2:让JwtUser也成为泛型类
如果你的JwtUser需要保持泛型的灵活性,支持不同的T类型,那可以把JwtUser也定义成泛型类,继承BaseUser<T>:
public class JwtUser<T> : BaseUser<T> { public string Sub { get; set; } public override T GetUser() { // 根据T的类型实现具体逻辑,比如返回默认值、从缓存获取等 return default(T); } }
这样编译器就能明确BaseUser<T>的类型参数,错误自然就解决了。
内容的提问来源于stack exchange,提问作者fuzzybear
相关产品推荐
相关产品推荐

