使用 C#,如何将 return 语句注入到方法中?

Using C#, how do I inject a return statement into a method?

感谢您的关注,我发现问题有点奇怪。这是我希望完成的事情:

我有什么

我正在使用 System.ComponentModel.DataAnnotations 来验证从网页发布的模型。我已经将必要的代码部分抽象成一个共享方法:

public static string Create_Widget(WidgetModel postedWidget)
        {
            //Validate the model
            var errors = HelperMethods.Validate(postedWidget);
            if (!string.IsNullOrEmpty(errors))
            {
                return errors;
            }

            //Do other stuff

        }

辅助方法:

 public static string Validate<T>(T entity)
        {
            var context = new ValidationContext(entity, serviceProvider: null, items: null);
            var results = new List<ValidationResult>();
            Validator.TryValidateObject(entity, context, results);

            return string.Join(",", results.Select(s => s.ErrorMessage));
        }

我想要什么

我真正想做的只是有一个扩展方法来验证我的模型,而不是在它下面为条件 return:

添加 if statement
public static string Create_Widget(WidgetModel postedWidget)
            {
                //Validate the model
                postedWidget.Validate(); //Automatically returns error string if errors.

                //Do other stuff

            }

这可能吗?

感谢上面评论的帮助,我生成了以下代码,完全符合我的要求:

扩展方法:

public static void Validate<T>(this T entity)
        {
            var errors = new List<ValidationResult>();
            var result = "";

            try
            {
                var context = new ValidationContext(entity, null, null);
                Validator.TryValidateObject(entity, context, errors, true);
                result = (errors.Any()) ? string.Join(",", errors.Select(s => s.ErrorMessage)) : "";
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            if (!string.IsNullOrEmpty(result))
            {
                throw new Exception(result);
            }
        }

用法

假设您有一个带有数据验证注释的有效模型,您只需要:

widgetModel.Validate();

如果模型中的一个或多个属性未通过验证,则会返回以逗号分隔的错误列表。就我而言,我在视图中使用 AngularJS,因此我可以使用 .error() 捕获失败的 api 调用并使用视图中的错误列表。