Editing Validation实现模式 - CassiniLaw/KnowledgeBase GitHub Wiki

Validation实现模式

classDiagram
    namespace FluentValidation{
        class AbstractValidator~T~{
            + RuleSet(string ruleSetName, Action action)
            + RuleFor(Expression expression)
        }
        class IValidator{
            <<interface>>
        } 
        class IValidatorT~T~{
            <<interface>>
        } 
        class IEnumerable~IValidationRule~{
            <<interface>>
        }
    }

    namespace Microsoft.Extensions.DependencyInjection {
        class ServiceCollectionServiceExtensions {
            <<static>>
            + AddScoped(...)$
        }
    }

    IValidatorT~T~ --|> IValidator
    AbstractValidator~T~ ..|> IValidatorT~T~
    AbstractValidator~T~ ..|> IEnumerable~IValidationRule~

    namespace Sanjel.DigitalResourceBoard.Core {
        class Services.IDependentDataService {
            <<interface>>
        }
        class Services.DependentDataService {
        }
        class Common.DependencyInjectionExtensions {
            <<static>>
            IServiceCollection AddSanjelMdm(this IServiceCollection services, SanjelMdmOptions options)$
        }
    }
    Services.DependentDataService ..|> Services.IDependentDataService
    Common.DependencyInjectionExtensions ..> Services.DependentDataService
    Common.DependencyInjectionExtensions ..> ServiceCollectionServiceExtensions
    ServiceCollectionServiceExtensions ..> IValidator

    namespace Sanjel.DigitalResourceBoard.Core.Validators{
        class CustomValidators {
            <<static>>
            + IRuleBuilderOptions SetChildValidator()
        }
        class SimpleValidator{
            +SimpleValidator()
        }
        class ComplexValidator{
            +ComplexValidator()
        }
    }

    AbstractValidator~T~ <|-- SimpleValidator
    AbstractValidator~T~ <|-- ComplexValidator

    ComplexValidator ..> CustomValidators
    ComplexValidator ..> Services.IDependentDataService
    ComplexValidator o--> IValidator

    namespace Sanjel.DigitalResourceBoard.Blazor {
        class Program {
            <<static>>
            + main()
        }
    }

    Program ..> Common.DependencyInjectionExtensions


Loading
⚠️ **GitHub.com Fallback** ⚠️