使用自己的属性扩展.NET MembershipUser

Eri*_*itz 9 .net c# membership asp.net asp.net-membership

我已经写了一个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
    );
Run Code Online (Sandbox Code Playgroud)

但是我想延长一点,像这样:

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
    );
Run Code Online (Sandbox Code Playgroud)

有没有办法扩展默认类?

nWo*_*orx 8

当然!

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

public class CustomUser : MembershipUser
{
    // your custom properties/methods go here
}
Run Code Online (Sandbox Code Playgroud)

在你的CustomMembershipProvider你可以返回你的CustomUser对象.您只需要在客户端应用程序中强制转换为CustomUser.像这样:

var myUserObject = Membership.GetUser() as CustomUser;
Run Code Online (Sandbox Code Playgroud)