使用Expression <Func <TEntity,TResult >>作为默认/可选参数

时间:2019-06-14 23:34:07

标签: c# expression-trees optional-parameters default-parameters

我对使用表达式树作为默认/可选参数的C#感到好奇,但是否有为它分配另一个表达式或匿名函数null 之外的其他功能?例如:

// compile error: Default parameter value for 'selector' must be a compile-time constant
Task<TResult> GetSingleAsync<TResult>(
            Expression<Func<TEntity, TResult>> selector = (TEntity) => TEntity));

基本上我希望我的表达式selector是一个可选参数,并在调用时未指定默认值TEntity(例如 (TEntity) => TEntity),但这是以上示例中不允许。但是,当我调用上述函数时,我可以使用相同的匿名函数

// I can assign 'selector' with '(TEntity) => TEntity' when calling the method
public async Task<TEntity> GetSingleAsync(int id)
            => await GetSingleAsync(selector: (TEntity) => TEntity);

在声明我的方法签名时,有什么可以实现我想要的东西吗?

0 个答案:

没有答案