受保护的访问

时间:2014-10-20 11:05:14

标签: c# asp.net asp.net-mvc

我目前正在扩展其他人工作的项目,并且我一直在尝试获取受保护变量的信息。我已经尝试了几件事,但变量总是为空。

public class AController : Controller
{
    Protected Login _login {get; set;}
}
public class BController : AController
{
    _login = login;
}
public class CController : AController
{
    if(_login != null)
    {      
    }
}

这是我认为它会起作用的方式。我知道我不能CController : BController因为它受到保护。是否有其他方法可以将信息从BController传递到CController。

2 个答案:

答案 0 :(得分:3)

所以你有BController的实例和CController的实例,都继承了AController。因此,当您创建它们时,它们是两个不同的实例,并且每个实例都有自己的_login变量,更改一个,不会更改另一个,除非该变量是静态的并且跨实例共享。

您应该在AController的属性_login上使用 static 关键字来获得所需的结果。

然而,正确的解决方案是将login作为构造函数参数传递给BController和CController构造函数,以便它们共享相同的登录实例。

如果这些控制器是MVC控制器,为什么还需要在同一个请求中实例化它们?

答案 1 :(得分:0)

我不确定我在说什么,但要访问这些数据,您的对象是否需要继承您的超类?