在MVC中我有一个控制器来检查经过身份验证的用户的角色。基于它需要创建类的实例的角色。例如,如果角色是“学生”,我需要创建一个Student类的实例。我一直在尝试这样的东西,但它不起作用:
private object CurrentUser;
switch(Role)
{
case "student":
CurrentUser = context.Students.FirstOrDefault(std => std.UserId == WebSecurity.CurrentUserId);
break;
.
.
.
}
但是我无法定义学生属性。例如,当我想获得CurrentUser
时,没有可用的firstname
属性!
我该如何植入CurrentUser
?
答案 0 :(得分:2)
您已将CurrentUser定义为object
类型。除非你施放它,否则它不具有Student
的属性。
private object CurrentUser;
您可以使用接口或公共基类,例如
public class Person
{
public string FirstName { get; set; }
}
public class Student : Person
{
// Add special properties for students
}
public class Professor : Person
{
// Add special properties for professors
}
然后使用
private Person CurrentUser;
Person
可用的所有属性都可在CurrentUser
上找到。如果您需要访问仅在Student
上的属性,您可以这样投射:
((Student)CurrentUser).SomePropertyOfStudent