public T Get <T>(TUserRole Entity, UserRoleColumnType ColumnType)
        {
            var param  = Expression.Parameter(Helper.ClassType, "p");
            var member = Helper.GetMemberAccess(param, ColumnType);

            if (member == null)
            {
                return(default(T));
            }
            var ttype = typeof(T);
            Expression <Func <TUserRole, T> > lambda;

            if (member.Type == ttype)
            {
                lambda = Expression.Lambda <Func <TUserRole, T> >(member, param);
            }
            else
            {
                lambda = Expression.Lambda <Func <TUserRole, T> >(Expression.Convert(member, typeof(T)), param);
            }
            return(lambda.Compile().Invoke(Entity));
        }
        public bool Set <TValue>(TUserRole Entity, UserRoleColumnType ColumnType, TValue Value)
        {
            var param1 = Expression.Parameter(Helper.ClassType, "p1");
            var param2 = Expression.Parameter(typeof(TValue), "p2");
            var member = Helper.GetMemberAccess(param1, ColumnType);

            if (member == null)
            {
                return(false);
            }
            Expression <Action <TUserRole, TValue> > lambda;

            if (member.Type == param2.Type)
            {
                lambda = Expression.Lambda <Action <TUserRole, TValue> >(Expression.Assign(member, param2), param1, param2);
            }
            else
            {
                lambda = Expression.Lambda <Action <TUserRole, TValue> >(Expression.Assign(member, Expression.Convert(param2, member.Type)), param1, param2);
            }
            lambda.Compile().Invoke(Entity, Value);

            return(true);
        }
 public object Get(TUserRole Entity, UserRoleColumnType ColumnType)
 {
     return(Get <object>(Entity, ColumnType));
 }