同步操作将从 郑州微厦/AI培训学习-题库-考试-视频-直播 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;namespace Song.DataQuery{/// <summary>/// 数据查询,主要针对一些复杂的查询,需要手写SQL语句/// 不同的数据库Sql语句(尤其是sql函数)略有差别,不得不分别处理/// </summary>public class DbQuery{//默认的数据库private static string _db_default = "SqlServer9";//类名private static string _type_name = "Song.DataQuery.{0}.{1}";/// <summary>////// </summary>/// <typeparam name="T"></typeparam>/// <param name="method">当前调用的方法</param>/// <param name="parameters"></param>/// <returns></returns>public static T Call<T>(MethodBase method, object[] parameters){string dbname = WeiSha.Data.Gateway.Default.DbType.ToString();string typename = string.Format(_type_name, dbname, method.DeclaringType.Name);Type type = Type.GetType(typename);//如果为空,采用默认的数据库类型的处理方法if (type == null) type = Type.GetType(string.Format(_type_name, _db_default, method.DeclaringType.Name));//实例对象object execObj = Activator.CreateInstance(type);//针对当前数据库的查询方法MethodInfo execMethod = DbQuery.getMethod(type, method);if (execMethod == null){type = Type.GetType(string.Format(_type_name, _db_default, method.DeclaringType.Name));execMethod = DbQuery.getMethod(type, method);}if (execMethod == null) return default;//调用object objResult = execMethod.Invoke(execObj, parameters);return objResult == null ? default : (T)objResult;}public static T Call<T>(object[] parameters){//通过堆栈,获取调用该方法的上级方法StackTrace stackTrace = new StackTrace();StackFrame stackFrame = stackTrace.GetFrame(1);MethodBase method = stackFrame.GetMethod();return Call<T>(method, parameters);}public static T Call<T>(object parameter){//通过堆栈,获取调用该方法的上级方法StackTrace stackTrace = new StackTrace();StackFrame stackFrame = stackTrace.GetFrame(1);MethodBase method = stackFrame.GetMethod();object[] parameters = new object[] { parameter };return Call<T>(method, parameters);}//public static T Call<T>(params object[] objs)//{// //通过堆栈,获取调用该方法的上级方法// StackTrace stackTrace = new StackTrace();// StackFrame stackFrame = stackTrace.GetFrame(1);// MethodBase method = stackFrame.GetMethod();// return Call<T>(method, objs);//}public static T Call<T>(){//通过堆栈,获取调用该方法的上级方法StackTrace stackTrace = new StackTrace();StackFrame stackFrame = stackTrace.GetFrame(1);MethodBase method = stackFrame.GetMethod();return Call<T>(method, null);}#region 私有方法/// <summary>/// 获取与参数类型匹配的方法/// </summary>/// <param name="type">要创建方法的对象的类型</param>/// <param name="method">当前调用的方法</param>/// <returns></returns>private static MethodInfo getMethod(Type type, MethodBase method){List<Type> list = new List<Type>();ParameterInfo[] pis = method.GetParameters();foreach(ParameterInfo pi in pis){list.Add(pi.ParameterType);}return type.GetMethod(method.Name,list.ToArray());}#endregion}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。