I have a generic class:
public class ProviderAdapter<TDto, TModel>
{
    public ProviderAdapter(IQueryable source, Func<TDto, TModel> mapping)
    {
      ... //not important
    }
}
and extension method:
public static class QueryableExtensions
{
    public static IQueryable<TModel> Map<TDto, TModel>(
        this IQueryable<TDto> query, Func<TDto, TModel> mapping)
    {
      var providerAdapter = new ProviderAdapter<TDto, TModel>(query, mapping);
      var result = new QueryableAdapter<TModel>(providerAdapter);
      return result;
    }
}
Now I want to create another extension method for non-generic IQueryable:
public static class QueryableExtensions
{
    public static IQueryable<TModel> Map<TModel>(
        this IQueryable query, Func<dynamic, TModel> mapping)
    {
      //how to create ProviderAdapter instance having 
      //query.ElementType and mapping Func with dynamic?
      var providerAdapter = new ProviderAdapter<type from query.ElementType, TModel>(query, 
      new Func<type from query.ElementType, TModel> using mapping Func<dynamic,TModel>
    }
}
Is it possible? I am no sure about 'mapping' parameter type - I was planning to create new Func using reflection that invokes
Func<dynamic, TModel> 
but converts first parameter to query.ElementType. Maybe 'mapping' parameter should be of type
Expression<Func<dynamic, TModel>>
 
Aucun commentaire:
Enregistrer un commentaire