我有一堆 Web API 控制器,通常看起来像这个例子:
public class ProductsController : ApiController
{
private readonly context db = new context();
public Product GetProductById(int id)
{
var product = db.products.FirstOrDefault((p) => p.Id == id);
var category = db.category.FirstOrDefault((p) => p.Id == id);
if (product == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
if (category == someCategory)
{
throw new HttpResponseException(HttpStatusCode.BadRequest,new HttpError( "Custom Message"));
}
if (itsrainingToday == SomeOtherSpaghettiCode)
{
throw new HttpResponseException(HttpStatusCode.BadRequest, new HttpError("Some other mess"));
}
//and so on and so forth
return product;
}
}
正如你所看到的,这是一个非常丑陋的烂摊子,尤其是。如果您有数百条规则和数十个控制器。什么是一种有效的方法来分解这些“业务规则”,以便它们可以应用于具有覆盖的多个控制器?我正在寻找基于此通用代码的良好设计模式和示例。
我了解工作单元、Unity 和其他方法。只需要一些关于遵循哪条路径的指导。