Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 public static object CreateProxyByEmit(ObModelBase source)
 {
     return(Create(source.GetType(), source));
 }