2011-04-29 61 views
8

我写了一个自定义MembershipProvider,除了一件小事外我的工作真的很棒,我想扩展一下MembershipUser类。使用自己的属性扩展.NET 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 
    ); 

有没有一种方法来扩展默认的类?

回答

8

当然!

只需创建一个扩展MembershipUser类:

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

在你CustomMembershipProvider你可以返回你的CustomUser对象。您只需将客户端应用程序投射到CustomUser即可。像这样:

var myUserObject = Membership.GetUser() as CustomUser; 
4

MembershipUser不是密封类,所以你可以创建一个新类继承它。保持现有的功能,只添加你需要的额外东西。

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

2
  • 创建自己的供应商,从System.Web.Security.MembershipProvider
  • 继承创建自己的会员信息,从System.Web.Security.MembershipUser
  • 继承CreateUser()GetUser()返回类等