3

DI フレームワークとして ninjects を使用して流暢な検証フレームワークを実装する方法についてのヘルプを探しています。

ninject 拡張機能がありますが、その使用方法に関するドキュメントが見つかりません。これらの非常に優れたフレームワークをセットアップするためのドキュメント/チュートリアルはどこにありますか?

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
4

2 に答える 2

4

Ninject Fluent Validation モジュールreadmeは非常に明確です。

使用するには、次の手順に従います。

NinjectValidatorFactory を使用するように ASP.NET MVC を接続します。

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)); 
    } 
}
于 2011-05-09T14:47:10.830 に答える
3
public class FluentValidatorModule : NinjectModule
{
    public override void Load()
    {
        //  NOTE: it should have: <IValidator>()

        AssemblyScanner.FindValidatorsInAssemblyContaining<IValidator>()
            .ForEach(match => Bind(match.InterfaceType).To(match.ValidatorType));
    }
}
于 2011-08-05T03:01:42.313 に答える