我有两个类,一个叫做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