我有一个像这样的构造函数的控制器:
Public Sub New(Service As ICategoryService)
服务的构造函数如下所示:
Public Sub New(Repository As IRepository(Of Category), IValidationDictionary)
我有一个名为ModelStateWrapper的类,它实现了IValidationDictionary:
Public Class ModelStateWrapper
Implements IValidationDictionary
Private ModelState As ModelStateDictionary
Public Sub New(ModelState As ModelStateDictionary)
Me.ModelState = ModelState
End Sub
Public Sub AddError(Key As String, Message As String) Implements Core.Interfaces.IValidationDictionary.AddError
ModelState.AddModelError(Key, Message)
End Sub
Public ReadOnly Property IsValid As Boolean Implements Core.Interfaces.IValidationDictionary.IsValid
Get
Return ModelState.IsValid
End Get
End Property
End Class
我想将控制器的ModelState注入ModelStateWrapper,并将其注入服务中。这可能吗?
我已经查看了Ninject中的自定义提供程序,并让控制器继承了BaseController类,但它似乎不起作用。有什么想法吗?
此外,在服务层中进行验证的标准方法是什么,可以从控制器中使用?
答案 0 :(得分:2)
看起来你在尝试注入ModelState时会遇到问题,因为曾经在一个动作方法中你已经有了你希望传递给你的包装器的ModelState的实例。
并非每个对象都需要或应该注入。有时,这种情况可能是其中之一,“注入”或将依赖项或对象作为参数提供给需要它的方法更简洁,更简单。也就是说,将IValidationDictionary
作为参数传递给服务中的方法。在控制器中构造一个ModelStateWrapper(新建它或使用Factory),并将其传入。