我有這個測試方法,我對「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