• ASP.Net 反射简单工厂模式


    SqlDal中


    public int AddUser<T>(T model) where T : class, new()
            {
              return  connection.Execute(GetSQLStr<T>(model));
            }

            public List<T> GetList<T>() where T : class, new()
            {
                return connection.Query<T>("").AsList();
            }
    /// <summary>
            /// 反射
            /// </summary>
            /// <typeparam name="T"><peparam>
            /// <param name="model"></param>
            /// <returns></returns>
            public string GetSQLStr<T>(T model) where T:class,new()
            {
                Type type = model.GetType();

                string tableName = type.Name.Replace("Model","");

                string _fields = "";

                string _values = "";
                //获取属性

                PropertyInfo[] properties = type.GetProperties();

                for(int i=0;i<properties.Length;i++)
                {
                    if(properties[i].Name.ToLower().Contains("id"))
                    {
                        continue;
                    }

                    if(i+1==properties.Length)
                    {
                        _fields += properties[i].Name;
                        _values += "'" + properties[i].GetValue(model) + "'";
                    }
                    else
                    {
                        _fields += properties[i].Name + ",";
                        _values += "'" + properties[i].GetValue(model) + "',";
                    }
                }
                string sql = $"insert into TB_{tableName}({_fields}) values({_values})";

                return sql;
            }


    MySqlDal中

     public int AddUser<T>(T model) where T : class, new()
            {
                return connection.Execute("");
            }

            public List<T> GetList<T>() where T : class, new()
            {
               return connection.Query<T>("select *from user").AsList();
            }


     public static IUserDAL CreateInstance(string typeName)
            {
                switch (typeName.ToLower())
                {
                    case "sql":
                        return new SqlUserDAL();
                    case "mysql":
                        return new MySqlUserDAL();
                    default:
                        return null;
                }
            }


    Factory中


     public static IUserDAL CreateInstance(string typeName)
            {
                switch (typeName.ToLower())
                {
                    case "sql":
                        return new SqlUserDAL();
                    case "mysql":
                        return new MySqlUserDAL();
                    default:
                        return null;
                }
            }

  • 相关阅读:
    UVtool 工具解释1
    系统自己提供的 非常方便进行轴向的改变。
    解释脚本语言 计算两个向量的夹角度数。
    转换到正交视图的算法。
    对于 位 的判断我一般都转数组 其实这里有这个很好、
    服务器开启防火墙时千万别忘了开3389!
    j2me笔记
    成为那一小部分人!
    SEO笔记
    Java代码优化方案 J2ME内存优化
  • 原文地址:https://www.cnblogs.com/XJNB/p/13144592.html
Copyright © 2020-2023  润新知