创建未知类型的实例并使用它

时间:2014-10-17 20:12:43

标签: c# asp.net-mvc types

在MVC中我有一个控制器来检查经过身份验证的用户的角色。基于它需要创建类的实例的角色。例如,如果角色是“学生”,我需要创建一个Student类的实例。我一直在尝试这样的东西,但它不起作用:

private object CurrentUser;

switch(Role)
{
   case "student":
   CurrentUser = context.Students.FirstOrDefault(std => std.UserId == WebSecurity.CurrentUserId);
   break;
   .
   .
   .
}

但是我无法定义学生属性。例如,当我想获得CurrentUser时,没有可用的firstname属性! 我该如何植入CurrentUser

1 个答案:

答案 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