【问题标题】:Extending the .NET MembershipUser with own properties使用自己的属性扩展 .NET MembershipUser
【发布时间】:2011-04-29 14:57:18
【问题描述】:

我编写了一个自定义的MembershipProvider,除了一点点小东西外,它真的很棒,我想稍微扩展一下MembershipUser 类。

默认如下:

MembershipUser member = new MembershipUser(
    providerName: Membership.Provider.Name,
    name: db.userName,
    providerUserKey: null,
    email: db.userEmail,
    passwordQuestion: "",
    comment: "",
    isApproved: true,
    isLockedOut: false,
    creationDate: db.creationDate,
    lastLoginDate: db.lastLoginDate,
    lastActivityDate: db.lastActivityDate,
    lastPasswordChangedDate: DateTime.Now,
    lastLockoutDate: DateTime.Now
    );

但我想扩展一下,像这样:

MembershipUser member = new MembershipUser(
    providerName: Membership.Provider.Name,
    name: db.userName,
    guid: db.userGuid,
    company: db.companyName,
    companyGuid: db.companyGuid,
    whatever: db.whatever,
    providerUserKey: null,
    email: db.userEmail,
    passwordQuestion: "",
    comment: "",
    isApproved: true,
    isLockedOut: false,
    creationDate: db.creationDate,
    lastLoginDate: db.lastLoginDate,
    lastActivityDate: db.lastActivityDate,
    lastPasswordChangedDate: DateTime.Now,
    lastLockoutDate: DateTime.Now
    );

有没有办法扩展默认类?

【问题讨论】:

    标签: c# .net asp.net asp.net-membership membership


    【解决方案1】:

    当然!

    只需创建一个扩展 MembershipUser 的类:

    public class CustomUser : MembershipUser
    {
        // your custom properties/methods go here
    }
    

    在您的CustomMembershipProvider 中,您可以返回您的CustomUser 对象。您只需将客户端应用程序转换为CustomUser。像这样:

    var myUserObject = Membership.GetUser() as CustomUser;
    

    【讨论】:

      【解决方案2】:

      MembershipUser 不是密封类,因此您可以创建一个继承自它的新类。保留现有功能,只添加您需要的额外内容。

      如果您确实扩展它,您要么必须编写自己的成员资格提供程序来返回您的新类,要么在每次调用默认提供程序后从一个转换为另一个。

      【讨论】:

        【解决方案3】:
        • 创建你自己的提供者,继承自System.Web.Security.MembershipProvider
        • 创建自己的会员信息,继承自System.Web.Security.MembershipUser
        • CreateUser()GetUser() 等处返回您的课程

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-10-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-16
          相关资源
          最近更新 更多