Ninjects с беглой проверкой - PullRequest
3 голосов
/ 09 мая 2011

Я ищу некоторую помощь в том, как реализовать инфраструктуру fluentvalidation с помощью ninjects в качестве структуры DI.

Существует неосновное расширение, но я не могу найти документацию о том, как его использовать. Где можно найти документацию / учебное пособие для настройки этих очень хороших фреймворков?

Vb.net решение

Public Class Dinner

Public Property DinnerID As Guid

Public Property Title As String

Public Property EventDate As DateTime

Public Property Address As String

Public Property HostedBy As String

Public Overridable Property RSVPs As ICollection(Of RSVP)

End Class



Imports FluentValidation

    Public Class dinnervalidator
        Inherits AbstractValidator(Of Dinner)

        Public Sub New()
            RuleFor(Function(x) x.EventDate).NotEmpty().WithMessage("Gelieve een geldige eventdatum op te geven")
            RuleFor(Function(x) x.Address).NotEmpty().WithMessage("Gelieve een adres in te vullen").Length(5, 50).WithMessage("Gelieve een Geldig adres in te vullen aub")
        End Sub
    End Class

Public Class fluentvalidationmodule
    Inherits NinjectModule

    Public Overrides Sub Load()
        AssemblyScanner.FindValidatorsInAssemblyContaining(Of dinnervalidator) _
            .ForEach(Function(x) Bind(x.InterfaceType).To(x.ValidatorType))

    End Sub

End Class

Ответы [ 2 ]

4 голосов
/ 09 мая 2011

readme для модуля Ninject Fluent Validation довольно явно:

Чтобы использовать, выполните следующие действия:

ПодключитеASP.NET MVC для использования NinjectValidatorFactory:

NinjectValidatorFactory ninjectValidatorFactory = 
    new NinjectValidatorFactory(ninjectKernel); 
ModelValidatorProviders.Providers.Add(
    new FluentValidationModelValidatorProvider(ninjectValidatorFactory));
DataAnnotationsModelValidatorProvider.
    AddImplicitRequiredAttributeForValueTypes = false;

Добавьте в свой проект модуль, который свяжет все ваши валидаторы:

public class FluentValidatorModule : NinjectModule { 
    public override void Load() { 
        AssemblyScanner.FindValidatorsInAssemblyContaining().ForEach(
            match => Bind(match.InterfaceType).To(match.ValidatorType)); 
    } 
}
3 голосов
/ 05 августа 2011
public class FluentValidatorModule : NinjectModule
{
    public override void Load()
    {
        //  NOTE: it should have: <IValidator>()

        AssemblyScanner.FindValidatorsInAssemblyContaining<IValidator>()
            .ForEach(match => Bind(match.InterfaceType).To(match.ValidatorType));
    }
}
...