title: How to make IList compatible to IEnumerable during lambda expression?
body: <p>I'm trying to convert this:</p>
  
  <pre><code>ISession.Query&lt;Question&gt;()
      .Where(x =&gt; x.QuestionId == q.QuestionId)
      .FetchMany(x =&gt; x.Answers)
      .ToFuture();
  </code></pre>
  
  <p>To reflection type:</p>
  
  <pre><code>IQueryable&lt;Question&gt; query = ISession.Query&lt;Question&gt;().Where(string.Format("{0} = @0", "QuestionId"), q.QuestionId);
  Type emType = typeof(NHibernate.Linq.EagerFetchingExtensionMethods);
  MethodInfo mi = emType.GetMethod("FetchMany");
  
  ParameterExpression paramEx = Expression.Parameter(typeof(Question), "x");
  MemberExpression me = Expression.Property(paramEx, "Answers");         
  LambdaExpression lambdaEx = Expression.Lambda (me, paramEx);            
  
  // runtime error here
  mi.MakeGenericMethod(typeof(Question), typeof(Answer)).Invoke(emType, new object[] { query, lambdaEx }); 
  </code></pre>
  
  <p>The runtime error:</p>
  
  <pre><code>System.ArgumentException: Object of type 
  'System.Linq.Expressions.Expression`1
  [System.Func`2[TestXXX.TheModels.Question,
  System.Collections.Generic.IList`1[TestXXX.TheModels.Answer]]]' 
  
  cannot be converted to type
  
  'System.Linq.Expressions.Expression`1
  [System.Func`2[TestXXX.TheModels.Question,
  System.Collections.Generic.IEnumerable`1[TestXXX.TheModels.Answer]]]'.
  </code></pre>
  
  <p>POCO sample:</p>
  
  <p>The Answers in Question is an IList, please don't advise to change IList to IEnumerable ;-)</p>
  
  <pre><code>public class Question
  {
      public virtual int QuestionId { get; set; }
      public virtual string QuestionText { get; set; }
  
      public virtual IList&lt;Answer&gt; Answers { get; set; }
  }
  </code></pre>
  
  <p>Here's the method signature of FetchMany:</p>
  
  <pre><code>namespace NHibernate.Linq
  {
      public static class EagerFetchingExtensionMethods
      {
          public static INhFetchRequest&lt;TOriginating, TRelated&gt; Fetch&lt;TOriginating, TRelated&gt;(this IQueryable&lt;TOriginating&gt; query, Expression&lt;Func&lt;TOriginating, TRelated&gt;&gt; relatedObjectSelector);
          public static INhFetchRequest&lt;TOriginating, TRelated&gt; FetchMany&lt;TOriginating, TRelated&gt;(this IQueryable&lt;TOriginating&gt; query, Expression&lt;Func&lt;TOriginating, IEnumerable&lt;TRelated&gt;&gt;&gt; relatedObjectSelector);
          public static INhFetchRequest&lt;TQueried, TRelated&gt; ThenFetch&lt;TQueried, TFetch, TRelated&gt;(this INhFetchRequest&lt;TQueried, TFetch&gt; query, Expression&lt;Func&lt;TFetch, TRelated&gt;&gt; relatedObjectSelector);
          public static INhFetchRequest&lt;TQueried, TRelated&gt; ThenFetchMany&lt;TQueried, TFetch, TRelated&gt;(this INhFetchRequest&lt;TQueried, TFetch&gt; query, Expression&lt;Func&lt;TFetch, IEnumerable&lt;TRelated&gt;&gt;&gt; relatedObjectSelector);
      }
  }
  </code></pre>
  
  <p>What should be done so it's possible to pass an IList to NHibernate's FetchMany's IEnumerable during reflection? </p>
  
  <p>Note: can pass IList to IEnumerable if we are not using reflection</p>