Подтвердить что ты не робот

Именованные параметры с параметрами

У меня есть метод для получения значений из базы данных.

 public virtual List<TEntity> GetValues(
           int? parameter1 = null,
           int? parameter2 = null,
           int? parameter3 = null,
           params Expression<Func<TEntity, object>>[] include)
        {
            //...
        } 

Как я могу вызвать эту функцию с именованным параметром, чтобы не писать все параметры до include? Я хочу сделать что-то вроде этого

var userInfo1 = Unit.UserSrvc.GetValues(include: p => p.Membership, p => p.User);

Но это не работает? Как использовать параметр named с параметрами?

4b9b3361

Ответ 1

Я думаю, что единственный способ - это что-то вроде:

GetValues(include:
   new Expression<Func<TEntity, object>>[] { p => p.Membership, p => p.User })

Что не так здорово. Было бы лучше всего, если бы вы добавили перегрузку для этого:

public List<Entity> GetValues(params Expression<Func<Entity, object>>[] include)
{
    return GetValues(null, null, null, include);
}

Затем вы вызываете свой метод так же, как

GetValues(p => p.Membership, p => p.User)

Ответ 2

Аргумент A params работает как массив, попробуйте этот синтаксис:

var userInfo1 = Unit.UserSrvc.GetValues(include: new Expression<Func<TEntity, object>>[] { p => p.Membership, p => p.User });

(Может потребоваться адаптация из-за общего параметра, но я думаю, что вы получите его суть)