2011-04-29 30 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()返回類等