【问题标题】:ServiceStack: Any easy way or option to sanitize string values?ServiceStack:有什么简单的方法或选项来清理字符串值?
【发布时间】:2014-11-08 13:44:25
【问题描述】:

我想知道在反序列化时是否有任何选项可以对传入 DTO 中的字符串值进行“修剪”和“如果为空则设置 null”?我有很多字符串属性需要执行此操作,因此在过滤器中手动为每个属性执行此操作似乎太乏味...

【问题讨论】:

    标签: c# servicestack dto servicestack-text


    【解决方案1】:

    您可以在全局请求过滤器中使用反射,例如:

    GlobalRequestFilters.Add((req, res, dto) => dto.SanitizeStrings());
    

    其中SanitizeStrings 只是一个自定义扩展方法:

    public static class ValidationUtils
    {
        public static void SanitizeStrings<T>(this T dto)
        {
            var pis = dto.GetType().GetProperties();    
            foreach (var pi in pis)
            {
                if (pi.PropertyType != typeof(string)) continue;
    
                var mi = pi.GetGetMethod();
                var strValue = (string)mi.Invoke(dto, new object[0]);
                if (strValue == null) continue;
                var trimValue = strValue.Trim();
    
                if (strValue.Length > 0 && strValue == trimValue) continue;
    
                strValue = trimValue.Length == 0 ? null : trimValue;
                pi.GetSetMethod().Invoke(dto, new object[] { strValue });
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 2014-07-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      • 2021-08-21
      • 1970-01-01
      相关资源
      最近更新 更多