4

我正在构建一个自定义 MembershipProvider ,更准确地说是 GetUser 函数。

因此,我有一个自定义 MembershipUser。

public class CustomMemberShipUser : MembershipUser
{
    public CustomMemberShipUser (
        string providerName,
        string email,
        object providerUserKey,
        string name,
        string passwordQuestion,
        string comment,
        bool isApproved,
        bool isLockedOut,
        DateTime creationDate,
        DateTime lastLoginDate,
        DateTime lastActivityDate,
        DateTime lastPasswordChangedDate,
        DateTime lastLockoutDate
        ): base(
            providerName, email, providerUserKey, name, passwordQuestion,
            comment, isApproved, isLockedOut, creationDate, lastLoginDate,
            lastActivityDate, lastPasswordChangedDate, lastLockoutDate)
    {
    }
}

在 MembershipProvider 的 GetUser 函数中,我获取用户数据并将它们放入 CustomMemberShipUser。

public override MembershipUser GetUser(string email, bool userIsOnline)
    {
        User u = _db.Users.Where(x => x.Email == email).First();
        CustomMemberShipUser customUser = new CustomMemberShipUser (
                                        "CustomMemberShipUser ",
                                        u.Email, 
                                        u.id,
                                        u.Email, 
                                        "", 
                                        "", 
                                        true, 
                                        false, 
                                        u.CreateDate, 
                                        DateTime.MinValue, 
                                        DateTime.MinValue, 
                                        DateTime.MinValue, 
                                        DateTime.MinValue);
        return customUser ;
    }

如您所见,我使用电子邮件作为 MemberShip 的名称,并且不需要大多数其他参数。

有没有办法让通话更简单?我不想用空字符串和最小日期值初始化 MembershipUser。

提前致谢

4

1 回答 1

4

您能否调整您的 CustomMembershipUser 为您做“填充”

   public class CustomMemberShipUser : MembershipUser
    {
        public CustomMemberShipUser (
            string email,
            object providerUserKey,
            ): base(
                "CustomMemberShipUser", email, providerUserKey, email, String.Empty,
                String.Empty, true, false, DateTime.MinValue, DateTime.MinValue,
                DateTime.MinValue, DateTime.MinValue, DateTime.MinValue)
        {
        }
    }

它不能解决问题,但它会整理您的提供商,这将成为

public override MembershipUser GetUser(string email, bool userIsOnline)
    {
        User u = _db.Users.Where(x => x.Email == email).First();
        CustomMemberShipUser customUser = new CustomMemberShipUser (u.Email, u.id);
        return customUser ;
    }

我认为您的 CustomMembershipUser 正在公开一些您没有向我们展示的其他属性。就目前而言,您可以只返回一个 MembershipUser。有了上述内容,您的 CustomMembershipUser 给您的唯一好处是您的 CustomMembershipProvider 中的结构更干净

于 2011-06-10T08:40:07.013 回答