带参数的命名参数
我有一个从数据库中获取值的方法。
public virtual List GetValues( int? parameter1 = null, int? parameter2 = null, int? parameter3 = null, params Expression<Func>[] include) { //... }
如何使用命名参数调用此函数,以便在include
之前不写入所有参数? 我想做这样的事情
var userInfo1 = Unit.UserSrvc.GetValues(include: p => p.Membership, p => p.User);
但这似乎不起作用? 如何在params中使用命名参数?
我认为唯一的方法是:
GetValues(include: new Expression>[] { p => p.Membership, p => p.User })
哪个不是那么好。 如果你为此添加一个重载可能是最好的:
public List GetValues(params Expression>[] include) { return GetValues(null, null, null, include); }
然后你就像调用你的方法一样
GetValues(p => p.Membership, p => p.User)
params
参数的工作方式类似于数组,请尝试以下语法:
var userInfo1 = Unit.UserSrvc.GetValues(include: new Expression>[] { p => p.Membership, p => p.User });
(由于通用参数可能需要一些调整,但我认为你得到了它的要点)