我有一个基本API控制器,这是一个片段:
public abstract class CrudController<TDto, TAdd, TEdit, TLookup> : BaseApiController
where TDto : BaseDto, new()
where TAdd : BaseModel
where TEdit : BaseModel
where TLookup : BaseModel
{
[NonAction]
protected virtual Expression<Func<TDto, bool>> CreateWhere(Guid? id)
{
return dto => true;
}
[HttpGet]
public virtual DataSet<TLookup> Query([FromUri] DtoQuery query, Guid? id = null)
{
DataSet<TDto> data = DataService.Query(query, CreateWhere(id));
return new DataSet<TLookup>(data.Records.Map<TLookup>(), data.Total);
}
}
我从这个ApiController类继承,然后想要在派生类中覆盖单个方法:
public class ProductCategoryController : CrudController<ProductSubcategoryDto, ProductSubcategoryModel, ProductSubcategoryModel, ProductSubcategoryModel>
{
protected override Expression<Func<ProductSubcategoryDto, bool>> CreateWhere(Guid? id)
{
return dto => dto.ProductCategoryGuid == id;
}
}
但是派生类中的方法没有被执行。
GET api / productcategorycontroller / query?从视图中调用queryetctectec。
DataSet&lt;&gt;()在基类上执行。
然后我逐步执行代码,此方法的第一行调用CreateWhere(),F11向我走几行而不是派生类中的重写方法。
BaseApiController只是一个派生自ApiController的空类。
答案 0 :(得分:0)
原来我打破了错误的ApiController,它一直在努力。