我有在碱库项目中定义的以下接口:实现一个基本接口问题
public interface IWorkContext {
T User<T>() where T : IUser;
// Note this method is kind of a shortcut so i don't
// have to keep passing in T
IUser User();
}
public interface IUser {
int Id { get; }
string UserName { get; }
}
现在我有另一个项目,该项目引用上面与下面的类(它实现IUSER)之一。
public class User : IUser {
public virtual int Id { get; set; }
public virtual string UserName { get; set; }
// ... Code removed for brevity
}
现在我还需要实现IWorkContext。这是我第一次尝试:
public class DefaultWorkContext : IWorkContext {
private readonly IUsersService _usersService;
public DefaultWorkContext(IUsersService usersService) {
_usersService = usersService;
}
public T User<T>() where T : IUser {
return _usersService.GetUser<T>(1));
}
public User User() {
return User<User>();
}
}
然而,这给出了错误:
The type 'T' cannot be used as type parameter 'T' in the generic type or method '...GetUser(int)'. There is no boxing conversion or type parameter conversion from 'T' to 'User'.
我敢肯定有一些基本的东西,我做错了。我会很感激这个模型的任何建议都可以改进。由于
编辑(这里要求是对的getUser方法):
public T GetUser<T>(int id) where T : User {
return _session.Get<T>(id);
}
注:_session是NHibernate的会议。
GetUser()返回什么? – itsme86
我们可以为您的UserService和GetUser方法提供代码吗? –
另外,GetUser接受什么样的泛型?我怀疑这个错误来自这里。 – dureuill