zoukankan      html  css  js  c++  java
  • QueryString to Dictionary<string, string>

    public class ModelConvertHelper<T> where T : new() {// 此处一定要加上new()
    public static IList<T> ConvertToModel(DataTable dt) {

    IList<T> ts = new List<T>();// 定义集合
    Type type = typeof(T); // 获得此模型的类型
    string tempName = "";
    foreach (DataRow dr in dt.Rows) {
    T t = new T();
    PropertyInfo[] propertys = t.GetType().GetProperties();// 获得此模型的公共属性
    foreach (PropertyInfo pi in propertys) {
    tempName = pi.Name;
    if (dt.Columns.Contains(tempName)) {
    if (!pi.CanWrite) continue;
    object value = dr[tempName];
    if (pi.PropertyType.Name == "String") {
    pi.SetValue(t, Convert.ToString(value), null);
    } else if (pi.PropertyType.Name == "Boolean") {
    pi.SetValue(t, Convert.ToBoolean(value), null);
    } else if (value != DBNull.Value) {
    pi.SetValue(t, value, null);
    }
    }
    }
    ts.Add(t);
    }
    return ts;
    }
    }



    public static void SetProperties<T>(this T source, HttpContext context) {

    var properties = typeof(T).GetProperties(BindingFlags.Instance | BindingFlags.Public);
    var values = HttpContext.Current.Request.QueryString;
    foreach (var prop in properties) {
    if (values.AllKeys.Contains(prop.Name)) {
    var propertyValue = values[prop.Name];
    //prop.SetValue(source, propertyValue);

    if (!prop.PropertyType.IsGenericType) {
    prop.SetValue(source, string.IsNullOrEmpty(propertyValue) ? null : Convert.ChangeType(propertyValue, prop.PropertyType));
    } else {
    Type genericTypeDefinition = prop.PropertyType.GetGenericTypeDefinition();
    if (genericTypeDefinition == typeof(Nullable<>)) {
    prop.SetValue(source, string.IsNullOrEmpty(propertyValue) ? null : Convert.ChangeType(propertyValue, Nullable.GetUnderlyingType(prop.PropertyType)));
    }
    }
    }
    }

    
    }
    mode.SetProperties(HttpContext.Current);

    Dictionary<string, string> dict = HttpContext.Current.Request.QueryString.Keys.Cast<string>()
    .ToDictionary(k => k, v => HttpContext.Current.Request.QueryString[v]);

  • 相关阅读:
    批量处理进程
    稳定寻找app package和activity的办法
    python yield
    记一次 Appium socket hang up 问题 以及小米手机关闭对uiautomator2.server的省电策略
    MySQL数据库连接不上、密码修改问题
    二、观察者模式(Observer Pattern)《HeadFirst设计模式》读书笔记
    一、策略模式(Strategy Pattern)《HeadFirst设计模式》读书笔记
    Java Scanner类中next()和nextLine()方法的区别
    Mybatis 9、Lombok
    Mybatis 8、使用注解开发
  • 原文地址:https://www.cnblogs.com/zwei1121/p/8391464.html
Copyright © 2011-2022 走看看