2011-05-09 68 views
3

我正在寻找一些帮助,如何实现与ninjects作为DI框架fluentvalidation框架。流利的验证Ninject

有一个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

readmeNinject Fluent Validation module是非常明确的:

要使用请按照下列步骤操作:

线了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
public class FluentValidatorModule : NinjectModule 
{ 
    public override void Load() 
    { 
     // NOTE: it should have: <IValidator>() 

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