2011-05-09 2 views
3

DI 프레임 워크로 ninjects와 함께 fluentvalidation 프레임 워크를 구현하는 방법에 대한 도움을 찾고 있습니다.Fluentvalidation이있는 Ninjects

ninject 확장 프로그램이 있지만 사용 방법에 대한 설명서를 찾을 수 없습니다. 이 훌륭한 프레임 워크를 설정하는 데 필요한 설명서/자습서는 어디에서 찾을 수 있습니까?

Vb.net는 Ninject Fluent Validation module에 대한 솔루션

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

readme 꽤 명시 적입니다 :

와이어까지 ASP.NET MVC는 사용하기 :

다음 단계를 따르 사용하려면 the 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
public class FluentValidatorModule : NinjectModule 
{ 
    public override void Load() 
    { 
     // NOTE: it should have: <IValidator>() 

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