/// <summary> /// 获取值对象 /// </summary> /// <typeparam name="TModel"></typeparam> /// <param name="model"></param> /// <param name="expression"></param> /// <param name="subModel"></param> /// <param name="index"></param> /// <returns></returns> private static int GetSubModel <TModel>(TModel model, Expression expression, out ObModelBase subModel, int index = -1) where TModel : ObModelBase { index++; if (!(expression is MemberExpression meExp)) { subModel = model; return(2); } var m = GetSubModel(model, meExp.Expression, out subModel, index); if (subModel == null) { //subModel = null; return(m); } var property = subModel.GetType().GetProperty(meExp.Member.Name); var obj = property?.GetValue(subModel); if (index == 0) { if (property != null && typeof(ObModelBase).IsAssignableFrom(property.PropertyType)) { subModel = (ObModelBase)obj; return(3); } //subModel = m; //递归到最后属性,返回父类对象 return(2); } if (obj is ObModelBase om) { subModel = om; return(2); } subModel = null; return(1); }
public static object CreateProxyByEmit(ObModelBase source) { return(Create(source.GetType(), source)); }