我有兩個類,一個叫做MemberModel,另一個叫做CustomPrincipal。 CustomPrincipal類繼承了MemberModel類。使用基類合併擴展類
的MemberModel類看起來是這樣的:
namespace example.Models
{
public class MemberModel
{
[Required]
public string Username { get; set; }
[Required]
public string Password { get; set; }
public bool Remember { get; set; }
}
}
的CustomPrincipal類看起來是這樣的:
namespace example.Examples
{
public class CustomPrincipal : MemberModel, IPrincipal
{
public CustomPrincipal(IIdentity identity)
{
this.Identity = identity;
}
public IIdentity Identity { get; private set; }
public bool IsInRole(string role) { return false; }
}
}
在下面的例子中,你看到兩個班MemberModel什麼充滿了用戶名,密碼和記住和CustomPrincipal類什麼是充滿了IIDentity信息,但不是用戶名,密碼和記住。
JavaScriptSerializer serializer = new JavaScriptSerializer();
MemberModel memberModel = serializer.Deserialize<MemberModel>(authTicket.UserData);
IIdentity user = HttpContext.Current.User.Identity;
CustomPrincipal customPrincipal = new CustomPrincipal(user);
現在我想要將MemberModel中的屬性與CustomPrincipal的屬性合併。
我已經嘗試了多種東西,但沒有一個正在工作。我嘗試將MemberModel轉換爲CustomPrincipal,但不幸的是這不起作用(見下文)。
customPrincipal = (CustomPrincipal) memberModel;
Unable to cast object of type 'example.Examples.Models.MemberModel' to type 'example.Examples.CustomPrincipal'.
我也tryed的例子的Rob Harley,使用反射來合併這兩個對象,但是這也沒有工作。
到底您期望達到的結果究竟是什麼? –
@MongZhu編輯的問題:) –
恐怕最好的解決方案是在'CustomPrincipal'中編寫一個方法,它將'MemberModel'作爲參數,並手動設置這些屬性或使構造函數接受'MemberModel' – slawekwin