Exemple #1
0
        public override T Sanitize(T value)
        {
            if (_sanitizer == null)
            {
                _sanitizer = ModelSanitizer.GetSanitizer <T>();
            }

            return(_sanitizer.Sanitize(value));
        }
Exemple #2
0
        public CastingSanitizer()
        {
            var sanitizer       = ModelSanitizer.GetSanitizer <TInner>();
            var sanitizerMethod = sanitizer.GetType().GetMethod(nameof(Sanitize));

            var param = Expression.Parameter(typeof(TOuter), "value");

            // ReSharper disable once AssignNullToNotNullAttribute
            var result = Expression.Convert(Expression.Call(Expression.Constant(sanitizer), sanitizerMethod, Expression.Convert(param, typeof(TInner))), typeof(TOuter));

            var lambda = Expression.Lambda <Func <TOuter, TOuter> >(result, param);

            ModelSanitizer.OnExpressionBuilt?.Invoke(lambda);

            _sanitize = lambda.CompileFast();
        }