1:IDictionary<string,string > 可以存储数据,将拼接的sql可以存储到这里下次可以使用
定义自定义属性表和列
typeof(T).GetCustomAttributes(type ty,bool flag)获取类的自定义的属性
typeof(T).GetProperties()获取类下面的属性
使用emit获取属性的类型
public static Action<T, object> EmitSetter<T>(string propertyName) { var type = typeof(T); var dynamicMethod = new DynamicMethod("EmitCallable", null, new[] { type, typeof(object) }, type.Module); var iLGenerator = dynamicMethod.GetILGenerator(); var callMethod = type.GetMethod("set_" + propertyName, BindingFlags.Instance | BindingFlags.IgnoreCase | BindingFlags.Public); var parameterInfo = callMethod.GetParameters()[0]; var local = iLGenerator.DeclareLocal(parameterInfo.ParameterType, true); iLGenerator.Emit(OpCodes.Ldarg_1); if (parameterInfo.ParameterType.IsValueType) { iLGenerator.Emit(OpCodes.Unbox_Any, parameterInfo.ParameterType); } else { iLGenerator.Emit(OpCodes.Castclass, parameterInfo.ParameterType); } iLGenerator.Emit(OpCodes.Stloc, local); iLGenerator.Emit(OpCodes.Ldarg_0); iLGenerator.Emit(OpCodes.Ldloc, local); iLGenerator.EmitCall(OpCodes.Callvirt, callMethod, null); iLGenerator.Emit(OpCodes.Ret); return dynamicMethod.CreateDelegate(typeof(Action<T, object>)) as Action<T, object>; }