基类A,类B继承A
  A<T>
   {
     public static T select(int  ID)
     {
        
         T myObject;
          Isession session=openSession();
    myObject=(T)session.CreateQuery("from (??) as myclass  where  myclass.Id='"+ID+"'").UniqueResult();
      }
      closeSession(session);
      return myObject;
   }
然后B类这样的,属性略 class B:A<B>
  {
   ...
   }
这样我拿B.select(id);就可以得到B类下的对象。
 用NHibernate做的持久化映射,我不想将类型带到参数里去。
还有,若 T myObject不存在,按道理为空,如何将他赋值为NULL,因为T可能是值类型。

解决方案 »

  1.   

    LZ干嘛不这样子用?
    T t = session.Load<T>(id);
      

  2.   


                try
                {
                    T t = session.Load<T>(id);
                    return t;
                }
                catch (Exception ex)
                {
                    // 异常处理
                    return default(T);
                }
                finally
                {
                        session.Close();
                }
      

  3.   

    昨天没分了,今天给加十分。昨天我这么写的:
    class A<T>

    public static T select(string classType, string content) //classType 代表类型,c ontent代表查询条件
    {
        T myObject;
        //组合查询语句并执行查询
       return  myObject;                 
    }
     class Player:A<Player>
      {}
     那么查一个player就这么查的:
     Player.select("Player","sex,1,Name,2"); //查询性别为男且姓名为2得人是否有一个,没有或多个返回空  还不怎么知道session的详细用法,就会用那么几个。我看看Load
      

  4.   

    session.Load<T>(ID)
    非泛型方法不能与类型参数一起使用