C# MVC项目的干燥原理

C# MVC项目的干燥原理,c#,refactoring,C#,Refactoring,我有一个MVC项目,我在整个项目中不断重复以下类型的代码 public ActionResult CompleteTask(Guid? id) { if (id.HasValue == false) { return HttpNotFound(); } Task task = _service.GetTask(id.Value); if (task == null)

我有一个MVC项目,我在整个项目中不断重复以下类型的代码

    public ActionResult CompleteTask(Guid? id)
    {
        if (id.HasValue == false)
        {
            return HttpNotFound();
        }

        Task task = _service.GetTask(id.Value);

        if (task == null)
        {
            return HttpNotFound();
        }

有可能重构这些空检查吗

第一个检查可以通过正确的布线和。第二个问题可以用自定义模型绑定器解决,这样动作方法签名就变成:

public ActionResult CompleteTask(Task task)
但这需要在您的
TaskBinder
中引入一些丑陋之处,因为(据我所知)除了抛出异常然后在基本控制器类中捕获它之外,无法从自定义绑定中终止请求处理