在我的Asp.Net MVC Core项目中,我使用SimpleInjector作为IoC。我之所以使用它,是因为有可能注册开放的泛型。
在某些视图模型中,我实现了IValidatableObject。
public class MyViewmodel: IValidatableObject
{
public string SomeProperty { get;set; }
//...
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//...
IMyService service = validationContext.GetService(typeof(IMyService)) as IMyService;
}
}
Run Code Online (Sandbox Code Playgroud)
方法GetService返回,null因为IMyService已由SimpleInjector在应用程序中注册。
在我的控制器中,我使用了这样的验证:
[HttpPost]
public async Task<IActionResult> Edit(MyViewmodel model)
{
if (ModelState.IsValid)
{
//...
}
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
那么,有没有办法从IServiceProviderValidationContext的Asp.Net Core获取IMyService ?