Ninject - внедрить ModelState в сервис? - PullRequest
0 голосов
/ 11 марта 2011

У меня есть контроллер с конструктором, таким образом:

Public Sub New(Service As ICategoryService)

Конструктор сервиса выглядит так:

Public Sub New(Repository As IRepository(Of Category), IValidationDictionary)

У меня есть класс Named 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, но, похоже, он не работает. Есть идеи?

Кроме того, каков стандартный способ проверки на уровне служб, который можно использовать с контроллера?

1 Ответ

2 голосов
/ 11 марта 2011

Похоже, у вас возникнут проблемы при попытке ввести ModelState из-за того факта, что однажды в методе действия у вас уже есть экземпляр ModelState, который вы хотите передать в свою оболочку.

Не каждый объект должен или должен быть введен.Иногда, в этом случае, возможно, один из тех случаев, все проще и проще «внедрить» или предоставить зависимость или объект в качестве параметра для метода, который требует этого.То есть передайте IValidationDictionary в качестве параметра методам в вашей службе.Создайте ModelStateWrapper в контроллере (обновите его или используйте Factory) и передайте его.

...