Resharper 为方法命名参数,但为表达式树命名
Resharper named arguments for methods, but position for expression trees
我们想为方法使用命名参数,所以我将设置更改为:
当我应用这种风格时,它确实为我的所有方法设置了命名参数。但它也更新了我的任何 linq 表达式,这导致了这个错误:
An expression tree may not contain a named argument specification
如何让 resharper 忽略 linq 表达式?
这是我应用样式之前的一些代码:
public class MessageService : Service<Message>, IMessageService
{
public MessageService(DbContext context) : base(context) { }
public IQueryable<Message> List(string status) => List().Where(m => m.Status.Equals(status)).OrderBy(m => m.NiceEndpoint.StartsWith("PSC") ? 0 : 1).ThenBy(m => m.DateCreated);
public IQueryable<Message> ListByType(string type, string status) => List().Where(m => m.Type.Equals(type, StringComparison.OrdinalIgnoreCase) && m.Status.Equals(status)).OrderBy(m => m.NiceEndpoint.StartsWith("PSC") ? 0 : 1).ThenBy(m => m.DateCreated);
public IQueryable<Message> ListByEndpoint(string endpoint, string status) => List().Where(m => m.Type.Equals(endpoint, StringComparison.OrdinalIgnoreCase) && m.Status.Equals(status, StringComparison.OrdinalIgnoreCase)).OrderBy(m => m.NiceEndpoint.StartsWith("PSC") ? 0 : 1).ThenBy(m => m.DateCreated);
public async Task<Message> GetAsync(string id) => await List().SingleOrDefaultAsync(m => m.Id.Equals(id));
}
当我应用上面的代码风格时,我得到了这个:
public class MessageService : Service<Message>, IMessageService
{
public MessageService(DbContext context) : base(context: context) { }
public IQueryable<Message> List(string status) => List().Where(m => m.Status.Equals(value: status)).OrderBy(m => m.NiceEndpoint.StartsWith("PSC") ? 0 : 1).ThenBy(m => m.DateCreated);
public IQueryable<Message> ListByType(string type, string status) => List().Where(m => m.Type.Equals(value: type, comparisonType: StringComparison.OrdinalIgnoreCase) && m.Status.Equals(value: status)).OrderBy(m => m.NiceEndpoint.StartsWith("PSC") ? 0 : 1).ThenBy(m => m.DateCreated);
public IQueryable<Message> ListByEndpoint(string endpoint, string status) => List().Where(m => m.Type.Equals(value: endpoint, comparisonType: StringComparison.OrdinalIgnoreCase) && m.Status.Equals(value: status, comparisonType: StringComparison.OrdinalIgnoreCase)).OrderBy(m => m.NiceEndpoint.StartsWith("PSC") ? 0 : 1).ThenBy(m => m.DateCreated);
public async Task<Message> GetAsync(string id) => await List().SingleOrDefaultAsync(m => m.Id.Equals(value: id));
}
如您所见,它已将命名参数添加到 linq 表达式中,这些表达式无法编译....
这个错误应该在 ReSharper 2019.1 中修复,请更新
我们想为方法使用命名参数,所以我将设置更改为:
当我应用这种风格时,它确实为我的所有方法设置了命名参数。但它也更新了我的任何 linq 表达式,这导致了这个错误:
An expression tree may not contain a named argument specification
如何让 resharper 忽略 linq 表达式?
这是我应用样式之前的一些代码:
public class MessageService : Service<Message>, IMessageService
{
public MessageService(DbContext context) : base(context) { }
public IQueryable<Message> List(string status) => List().Where(m => m.Status.Equals(status)).OrderBy(m => m.NiceEndpoint.StartsWith("PSC") ? 0 : 1).ThenBy(m => m.DateCreated);
public IQueryable<Message> ListByType(string type, string status) => List().Where(m => m.Type.Equals(type, StringComparison.OrdinalIgnoreCase) && m.Status.Equals(status)).OrderBy(m => m.NiceEndpoint.StartsWith("PSC") ? 0 : 1).ThenBy(m => m.DateCreated);
public IQueryable<Message> ListByEndpoint(string endpoint, string status) => List().Where(m => m.Type.Equals(endpoint, StringComparison.OrdinalIgnoreCase) && m.Status.Equals(status, StringComparison.OrdinalIgnoreCase)).OrderBy(m => m.NiceEndpoint.StartsWith("PSC") ? 0 : 1).ThenBy(m => m.DateCreated);
public async Task<Message> GetAsync(string id) => await List().SingleOrDefaultAsync(m => m.Id.Equals(id));
}
当我应用上面的代码风格时,我得到了这个:
public class MessageService : Service<Message>, IMessageService
{
public MessageService(DbContext context) : base(context: context) { }
public IQueryable<Message> List(string status) => List().Where(m => m.Status.Equals(value: status)).OrderBy(m => m.NiceEndpoint.StartsWith("PSC") ? 0 : 1).ThenBy(m => m.DateCreated);
public IQueryable<Message> ListByType(string type, string status) => List().Where(m => m.Type.Equals(value: type, comparisonType: StringComparison.OrdinalIgnoreCase) && m.Status.Equals(value: status)).OrderBy(m => m.NiceEndpoint.StartsWith("PSC") ? 0 : 1).ThenBy(m => m.DateCreated);
public IQueryable<Message> ListByEndpoint(string endpoint, string status) => List().Where(m => m.Type.Equals(value: endpoint, comparisonType: StringComparison.OrdinalIgnoreCase) && m.Status.Equals(value: status, comparisonType: StringComparison.OrdinalIgnoreCase)).OrderBy(m => m.NiceEndpoint.StartsWith("PSC") ? 0 : 1).ThenBy(m => m.DateCreated);
public async Task<Message> GetAsync(string id) => await List().SingleOrDefaultAsync(m => m.Id.Equals(value: id));
}
如您所见,它已将命名参数添加到 linq 表达式中,这些表达式无法编译....
这个错误应该在 ReSharper 2019.1 中修复,请更新