2015-07-02 194 views
1

我正在研究一种方法,该方法查询泛型类型并获取该类型的列表。但是,我希望能够为此添加Where(),所以我希望查询能够通过任何扩展或实现某个类/接口的类型进行查询。NHibernate queryover扩展类的泛型类型

public static List<T> getList<T>() where T : class 
    { 
     List<T> clientList = null; 
     using (ISession session = 
       NHibernateSessionFactoryManager.Factory.OpenSession()) 
     { 
      clientList = new List<T>(session.QueryOver<T>() 
       //.Where(x => !x.IsDisabled) - won't work 
       //.Where(x => !x.IsDeleted) - won't work 
       .List()); 
     } 
     return clientList; 
    } 

我想是这样的:

public static List<T:someClass> getList<T:someClass>() where T:someClass 
    { 
     List<T> clientList = null; 
     using (ISession session = 
       NHibernateSessionFactoryManager.Factory.OpenSession()) 
     { 
      clientList = new List<T>(session.QueryOver<T>() 
       .Where(x => !x.IsDisabled) 
       .Where(x => !x.IsDeleted) 
       .List()); 
     } 
     return clientList; 
    } 

someClass和它的孩子们将有IsDisabled, IsDeleted字段,以便queryOver不会抱怨他们。

目前该方法具有红色线条随处可见,如果您使用的约束正确的语法

回答

1

看起来不错:

public static List<T> getList<T>() where T : someClass 
+0

我明白了,我试图用T:someInterface。 –