Именованные параметры с параметрами - PullRequest
23 голосов
/ 26 марта 2012

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

 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);

Но это не похоже на работу? Как я могу использовать именованный параметр с params?

Ответы [ 2 ]

12 голосов
/ 26 марта 2012

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

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)
8 голосов
/ 26 марта 2012

A params аргумент работает как массив, попробуйте следующий синтаксис:

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

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

...