我正在構建一個自定義MembershipProvider更精確的GetUser函數。自定義MembershipUser只有需要的參數
爲此我有一個自定義的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 ;
}
正如你可以看到我使用電子郵件作爲名稱的成員,我不最需要的其它參數。
有沒有辦法讓通話更簡單?我不想用空字符串和最小日期值初始化MembershipUser。提前
感謝
我不認爲你可以避免它。但是你可以讓你的構造函數減少參數 – Eranga 2011-06-10 07:06:27
如果你正在使用SQL-Server作爲DBMS和標準的ASP.Net DB架構,你可以讓你的自定義MembershipProvider繼承自[SqlMembershipProvider](http://msdn.microsoft.com /en-us/library/system.web.security.sqlmembershipprovider.aspx)。 SqlMembershipProvider有一個[公共構造函數沒有參數](http://msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.sqlmembershipprovider%28v=vs.80%29.aspx#1)。 – 2011-06-10 07:20:40
@Tim hes試圖使用自定義成員資格提供程序。如果您的Membership構造函數中有參數,Asp.net運行時如何實例化它? – Eranga 2011-06-10 07:25:06