public bool Set <TValue>(TUser Entity, UserColumnType 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 <TUser, TValue> > lambda;

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

            return(true);

            //var prop = Helper.Get(ColumnType);
            //if (prop == null) return false;

            //prop.SetValue(Entity, Value, null);
            //return true;
        }
 public object Get(TUser Entity, UserColumnType ColumnType)
 {
     return(Get <object>(Entity, ColumnType));
     //var prop = Helper.Get(ColumnType);
     //if (prop == null) return null;
     //return prop.GetValue(Entity, null);
 }
        public T Get <T>(TUser Entity, UserColumnType 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 <TUser, T> > lambda;

            if (member.Type == ttype)
            {
                lambda = Expression.Lambda <Func <TUser, T> >(member, param);
            }
            else
            {
                lambda = Expression.Lambda <Func <TUser, T> >(Expression.Convert(member, typeof(T)), param);
            }
            return(lambda.Compile().Invoke(Entity));

            //var val = Get(Entity, ColumnType);
            //if (val == null) return default(T);

            //return (T)val;
        }
コード例 #4
0
        public bool Set <TValue>(EfUser Entity, UserColumnType ColumnType, TValue Value)
        {
            switch (ColumnType)
            {
            case UserColumnType.Application: Entity.Application = Value.CType <EfApplication>(); break;

            case UserColumnType.UserID: Entity.UserID = Value.CType <int>(); break;

            case UserColumnType.Username: Entity.Username = Value.CType <string>(); break;

            case UserColumnType.Email: Entity.Email = Value.CType <string>(); break;

            case UserColumnType.IsAnonymous: Entity.IsAnonymous = Value.CType <bool>(); break;

            case UserColumnType.Password: Entity.Password = Value.CType <string>(); break;

            case UserColumnType.PasswordFormat: Entity.PasswordFormat = Value.CType <int>(); break;

            case UserColumnType.PasswordSalt: Entity.PasswordSalt = Value.CType <string>(); break;

            case UserColumnType.PasswordQuestion: Entity.PasswordQuestion = Value.CType <string>(); break;

            case UserColumnType.PasswordAnswer: Entity.PasswordAnswer = Value.CType <string>(); break;

            case UserColumnType.IsApproved: Entity.IsApproved = Value.CType <bool>(); break;

            case UserColumnType.CreateOn: Entity.CreateOn = Value.CType <DateTime>(); break;

            case UserColumnType.LastLoginDate: Entity.LastLoginDate = Value.CType <DateTime>(); break;

            case UserColumnType.LastActivityDate: Entity.LastActivityDate = Value.CType <DateTime>(); break;

            case UserColumnType.LastPasswordChangedDate: Entity.LastPasswordChangedDate = Value.CType <DateTime>(); break;

            case UserColumnType.LastLockoutDate: Entity.LastLockoutDate = Value.CType <DateTime>(); break;

            case UserColumnType.FailedPasswordAttemptCount: Entity.FailedPasswordAttemptCount = Value.CType <int>(); break;

            case UserColumnType.FailedPasswordAttemptWindowStart: Entity.FailedPasswordAttemptWindowStart = Value.CType <DateTime>(); break;

            case UserColumnType.FailedPasswordAnswerAttemptCount: Entity.FailedPasswordAnswerAttemptCount = Value.CType <int>(); break;

            case UserColumnType.FailedPasswordAnswerAttemptWindowStart: Entity.FailedPasswordAnswerAttemptWindowStart = Value.CType <DateTime>(); break;

            case UserColumnType.Comment: Entity.Comment.CType <string>(); break;

            case UserColumnType.IsLockedOut: Entity.Status = Value.CType <bool>() ? (byte)2 : (byte)1; break;

            default: return(false);
            }
            return(true);
        }
コード例 #5
0
        public T Get <T>(EfUser Entity, UserColumnType ColumnType)
        {
            switch (ColumnType)
            {
            case UserColumnType.Application: return(Entity.Application.CType <T>());

            case UserColumnType.UserID: return(Entity.UserID.CType <T>());

            case UserColumnType.Username: return(Entity.Username.CType <T>());

            case UserColumnType.Email: return(Entity.Email.CType <T>());

            case UserColumnType.IsAnonymous: return(Entity.IsAnonymous.CType <T>());

            case UserColumnType.Password: return(Entity.Password.CType <T>());

            case UserColumnType.PasswordFormat: return(Entity.PasswordFormat.CType <T>());

            case UserColumnType.PasswordSalt: return(Entity.PasswordSalt.CType <T>());

            case UserColumnType.PasswordQuestion: return(Entity.PasswordQuestion.CType <T>());

            case UserColumnType.PasswordAnswer: return(Entity.PasswordAnswer.CType <T>());

            case UserColumnType.IsApproved: return(Entity.IsApproved.CType <T>());

            case UserColumnType.CreateOn: return(Entity.CreateOn.CType <T>());

            case UserColumnType.LastLoginDate: return(Entity.LastLoginDate.CType <T>());

            case UserColumnType.LastActivityDate: return(Entity.LastActivityDate.CType <T>());

            case UserColumnType.LastPasswordChangedDate: return(Entity.LastPasswordChangedDate.CType <T>());

            case UserColumnType.LastLockoutDate: return(Entity.LastLockoutDate.CType <T>());

            case UserColumnType.FailedPasswordAttemptCount: return(Entity.FailedPasswordAttemptCount.CType <T>());

            case UserColumnType.FailedPasswordAttemptWindowStart: return(Entity.FailedPasswordAttemptWindowStart.CType <T>());

            case UserColumnType.FailedPasswordAnswerAttemptCount: return(Entity.FailedPasswordAnswerAttemptCount.CType <T>());

            case UserColumnType.FailedPasswordAnswerAttemptWindowStart: return(Entity.FailedPasswordAnswerAttemptWindowStart.CType <T>());

            case UserColumnType.Comment: return(Entity.Comment.CType <T>());

            case UserColumnType.IsLockedOut: return((Entity.Status == 2).CType <T>());;

            default: return(default(T));
            }
        }
コード例 #6
0
 public object Get(EfUser Entity, UserColumnType ColumnType)
 {
     return(Get <object>(Entity, ColumnType));
 }