我使用的是默認的SqlMembershipProvider,但我創建了一個自定義的MembershipUser類(SoeMembershipUser),因爲我需要一個「DisplayName」屬性。所有DisplayName都會查看UserName並以不同的格式進行格式化。無法將MembershipUser投射到自定義類(ASP.NET)
當我嘗試將一個MembershipUser強制轉換爲SoeMembershipUser用戶時,我得到一個InvalidCastException異常。確切的錯誤是: 「無法轉換'System.Web.Security.MembershipUser'類型的對象來鍵入'Soe.Tracker.SoeMembershipUser'。」
這裏是一個失敗的代碼:
SoeMembershipUser user = (SoeMembershipUser)Membership.GetUser(username); // invalid cast
我也試着鑄造後,像這樣:
MembershipUser user = Membershipship.GetUser(username); // ok
...
string displayName = ((SoeMembershipUser)user).DisplayName; // invalid cast
這裏是SoeMembershipUser類: 注:我離開的建設者在第一,但稍後當我開始有問題時添加它們。添加它們沒有區別。
public class SoeMembershipUser : MembershipUser
{
public SoeMembershipUser()
: base()
{
}
public SoeMembershipUser(string providerName, string name,
Object providerUserKey, string email, string passwordQuestion,
string comment, bool isApproved, bool isLockedOut,
DateTime creationDate, DateTime lastLoginDate,
DateTime lastActivityDate, DateTime lastPasswordChangedDate,
DateTime lastLockoutDate)
: base(providerName, name, providerUserKey, email,
passwordQuestion, comment, isApproved, isLockedOut,
creationDate, lastLoginDate, lastActivityDate,
lastPasswordChangedDate, lastLockoutDate)
{
}
public virtual string DisplayName
{
get
{
if (UserName.Contains("@"))
return UserName.Substring(0, UserName.IndexOf("@"));
return UserName;
}
}
}
任何想法爲何此演員表無效?我只是俯視簡單的東西?
你能發佈實際無效的轉換錯誤信息嗎? – 2010-10-15 20:02:45
我在上面添加了確切的錯誤消息。堆棧跟蹤沒有顯示任何異常情況。 – Rick 2010-10-15 20:08:58