【发布时间】:2021-01-12 21:30:10
【问题描述】:
我有一个班级ProductService.cs,看起来像:
public class ProductService : IProductService
{
private readonly IMediator _mediator;
public ProductService(IMediator mediator)
{
_mediator = mediator;
}
public async Task<IQueryable<Models.Product>> GetActiveProducts()
{
var products = await _mediator.Send(new FindProducts);
return products.Where(product => product.Status.Id == (int)ProductStatusEnum.Active);
}
}
然后我的FindProducts 看起来像这样:
public class FindProducts
{
public class Handler : IRequest<IQueryable<Models.Product>>
{
private readonly ApplicationDbContext _dbContext;
public Handler(ApplicationDbContext dbContext)
{
_dbContext = dbContext;
}
public IQueryable<Models.Product> Handle()
{
return _dbContext.Products
.Select(p => new Models.Product
{
Name = p.Name,
Status = new ProductStatus
{
Id = p.Status.Id,
Status = p.Status.Status
}
})
.AsQueryable();
}
}
}
但是这不会编译,因为我得到构建错误A new expression requires (), [], or {} after type 我已经在整个网络上搜索,找不到任何关于如何在不发送 Query 的情况下发送 MediatR 请求的示例或文档,理想情况下这将获取所有产品,而不考虑产品数据。
我错过了什么吗?
【问题讨论】: