Я создаю метод расширения до IQueryable
, чтобы autopper передавал стандартный параметр.Хотя приведенный ниже код работает, кажется немного излишним указывать тип TSource
при вызове этого метода (как в приведенном ниже коде вызова) .... т.е. необходимо указывать <Item,
в вызове метода, когда он уже знаеттип entityQuery
- Item
.
. Я не эксперт в обобщениях, но мне интересно, есть ли способ удалить эту избыточность во время вызова, но все же квалифицировать TSource
как нуждающегося в соответствиик интерфейсу IAuditStampsViewModel
?
Вызов
public IQueryable<ItemViewModel> ConvertClassToViewModel(IQueryable<Item> entityQuery)
{
return entityQuery.ProjectToPassUserTimeOffset<Item, ItemViewModel>();
}
Определение метода расширения
public static class AutoMapperExtensions
{
public static IQueryable<TDestination> ProjectToPassUserTimeOffset<TSource, TDestination>(this IQueryable<TSource> entityQuery)
where TSource : class, IAuditStampsViewModel, new()
{
return entityQuery.ProjectTo<TDestination>(
new { intMinutesOffset = TimeUtilities.UserTimeZoneUTCOffsetMinutes() }
);
}
}