【发布时间】:2016-09-28 07:49:38
【问题描述】:
我有两个类,一个叫做 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'.
我也试过Rob Harley的例子,它使用反射来合并两个对象,但这也没有用。
【问题讨论】:
-
你期望最终达到的结果是什么?
-
@MongZhu 编辑问题:)
-
恐怕最好的解决方案是在
CustomPrincipal中编写一个方法,将MemberModel作为参数并手动设置这些属性或使构造函数接受MemberModel -
您可以在构造函数中添加参数,而不是方法。
标签: c# class inheritance merge base-class