我对使用表达式树作为默认/可选参数的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);
在声明我的方法签名时,有什么可以实现我想要的东西吗?