Please note, I have a mistake above.

The line:
               return new List<WhateverNameSpaceYouHave.IMS>();
Will not compile, because nobody told the compiler that we are sure that IMS
is in fact TEntity. This is a check that we ony know about.

So, since we already are sure that IMS is the same as TEntity in this
particular scope, we can replace the line with:
               return new List<TEntity>(); //which is same as IMS here as
per 'if" check

Then, our corrected method will be:

       public IList<TEntity> GetAll<TEntity>() where TEntity : class
       {
           if( typeof(TEntity) == typeof(WhateverNameSpaceYouHave.IMS) )
//if IMS return empty collection
               return new List<TEntity>(); //which is same as IMS here as
per 'if" check


           using (NHibernate.ISession session = OpenSession())
           {
               using (ITransaction transaction = session.BeginTransaction())
               {
                   ICriteria crit = session.CreateCriteria( typeof(TEntity)
);
                   // I use QueryOVer not Criteria, but I think you can also
type session.CreateCriteria<TEntity>();

                   IList<TEntity> result = crit.List<TEntity>();

                   return result;
               }
           }
       }


Really sorry for that mistake.

Regards,


 *Mohamed Meligy
*Readify | Senior Developer

M:*+61 451 835006* | W:  www.readify.net

 [image: Description: Description: Description: Description:
rss_16]<http://gurustop.net/>
 [image: Description: Description: Description: Description:
cid:[email protected]]
<http://www.linkedin.com/in/meligy>  [image:
Description: Description: Description: Description:
cid:[email protected]] <http://twitter.com/meligy>
 <http://www.readify.net/AboutUs/NewsItem.aspx?id=10>



On Sun, Sep 26, 2010 at 10:31 PM, Mohamed Meligy <[email protected]>wrote:

> This doesn't sound like related to NHibernate. It's pure .NET.
> I need to warn you. You are asking for one example to use Generics,
> reference types, and in fact basic C# foundations. Maybe you need some
> reading in these areas.
>
> But this doesn't mean we can't go try to solve that particular situation
> anyway :)
>
>
> You can change your method to be: GetAll<TEntity>()
>
> This way you can change the code to be like:
>
>        public IList<TEntity> GetAll<TEntity>() where TEntity : class
>
>        {
>            using (NHibernate.ISession session = OpenSession())
>            {
>                using (ITransaction transaction =
> session.BeginTransaction())
>                {
>                    ICriteria crit = session.CreateCriteria( typeof(TEntity)
> );
>                    // I use QueryOVer not Criteria, but I think you can
> also type session.CreateCriteria<TEntity>();
>
>                    IList<TEntity> result = crit.List<TEntity>();
>
>                    return result;
>                }
>            }
>        }
>
> Your problem was that you don't return anything in the case of "MS". You
> have to return something or the compiler will complain. This something must
> be assigned a value not just declared (because it's reference type). One way
> to do it is to return an empty collection for that specific case.
>
> Let's add that to the function:
>
>        public IList<TEntity> GetAll<TEntity>() where TEntity : class
>        {
>            if( typeof(TEntity) == typeof(WhateverNameSpaceYouHave.IMS) )
>                return new List<WhateverNameSpaceYouHave.IMS>();
>
>
>            using (NHibernate.ISession session = OpenSession())
>            {
>                using (ITransaction transaction =
> session.BeginTransaction())
>                {
>                    ICriteria crit = session.CreateCriteria( typeof(TEntity)
> );
>                    // I use QueryOVer not Criteria, but I think you can
> also type session.CreateCriteria<TEntity>();
>
>                    IList<TEntity> result = crit.List<TEntity>();
>
>                    return result;
>                }
>            }
>        }
>
> However, why you have all this logic in single place for all entities? Your
> system design seems to have a serious problem that will face you in
> maintaining code (for example, every type will have special condition and
> your method will grow until it's pain to even read), and maybe even writing
> and running the code originally as this one. You really need to check it
> again!
>
> I HIGHLY advise you to start a new thread with the details of how you
> structure your classes for data access for friends over here to help you
> spot the problems with that design and how to solve them.
>
>
>
> *Mohamed Meligy
> *Readify | Senior Developer
>
> M:*+61 451 835006* | W:  www.readify.net
>
>  [image: Description: Description: Description: Description: 
> rss_16]<http://gurustop.net/>
>  [image: Description: Description: Description: Description:
> cid:[email protected]] <http://www.linkedin.com/in/meligy>  
> [image:
> Description: Description: Description: Description:
> cid:[email protected]] <http://twitter.com/meligy>
>  <http://www.readify.net/AboutUs/NewsItem.aspx?id=10>
>
>
>
> On Sun, Sep 26, 2010 at 5:39 PM, adherence <[email protected]>wrote:
>
>> Hey Everyone..
>>  i  need to  return the  Ilist corresponding to the cases.
>>
>>  i have a problem in   switch.
>> 1-    when   i m  Returning a  value , it  gives error  ("Not all
>> paths  return a value")
>>
>> and
>>
>> 2-    when i  put  return outside the  switch block  or outside the
>> case ,it gives  error ("the retval doesnt exist in the current
>>
>> context")
>>
>> please  help ..
>>
>>
>>  public object GetAll(object _oplObj)
>>        {
>>            using (NHibernate.ISession session = OpenSession())
>>            {
>>                using (ITransaction transaction =
>> session.BeginTransaction())
>>                {
>>                    ICriteria crit =
>> session.CreateCriteria(_oplObj.GetType());
>>
>>         switch (_oplObj.GetType().ToString())
>>                            {
>>                             case "IMS":
>>                              break;
>>                        case "TPF":
>>                         IList<Jinnah.ObjectPersistanceLayer.TPF>
>> retval = crit.List<Jinnah.ObjectPersistanceLayer.TPF>();
>>                         return  retval;
>>                        break;
>>                            }
>>
>>        }
>>            }
>>        }
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<nhusers%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to