使用 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 调用并使用视图中的错误列表。
感谢您的关注,我发现问题有点奇怪。这是我希望完成的事情:
我有什么
我正在使用 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 调用并使用视图中的错误列表。