我有这个测试方法,我对“List”方法有问题。我想使用几个类(所有实现IAdminDecimal)。在QueryOver,我有这样的错误: 类型“T”必须是为了用它作为参数“T”在通用类型或方法“NHibernate.ISession.QueryOver()”NHibernate:通用方法中的QueryOver
引用类型using (var session = sessions.OpenSession())
{
using (var tx = session.BeginTransaction())
{
CurrentSessionContext.Bind(session);
AdministrationService service = new AdministrationService(session);
service.List<AdminDelay>();
tx.Commit();
}
}
类:
public class AdministrationService
{
private readonly ISession _session;
public AdministrationService(ISession session)
{
_session = session;
}
public IList<T> List<T>() where T : IAdminDecimal
{
var res = _session.QueryOver<T>().List<T>();
return res;
}
}
public interface IAdminDecimal
{
int Id { get; set; }
int Code { get; set; }
decimal Value { get; set; }
bool IsDeleted { get; set; }
}
public class AdminVAT : IAdminDecimal
{
public virtual int Id { get; set; }
public virtual int Code { get; set; }
public virtual decimal Value { get; set; }
public virtual bool IsDeleted { get; set; }
}
我试过,但在“列表”的测试方法,我有这样的错误:类型“AdminDelay”不能被用作在通用类型或方法“AdministrationService.List类型参数“T” ()”。 没有从'AdminDelay'到'IAdminDecimal'的隐式引用转换。 –
2011-06-16 08:22:43
这表明AdminDelay没有实现IAdminDecimal。你有AdminDelay类型的代码吗? – devdigital 2011-06-16 08:41:43
你是对的,这是我的错误“AdminDelay”不暗示这个interfance,但“AdminVAT”是的,这是工作:)谢谢。 – 2011-06-16 08:46:30