小编Tim*_*thy的帖子

如何使用Simple Injector从ValidationContext获得服务?

在我的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 ?

c# dependency-injection simple-injector

2
推荐指数
2
解决办法
511
查看次数

标签 统计

c# ×1

dependency-injection ×1

simple-injector ×1