我目前正在扩展其他人工作的项目,并且我一直在尝试获取受保护变量的信息。我已经尝试了几件事,但变量总是为空。
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。
答案 0 :(得分:3)
所以你有BController的实例和CController的实例,都继承了AController。因此,当您创建它们时,它们是两个不同的实例,并且每个实例都有自己的_login变量,更改一个,不会更改另一个,除非该变量是静态的并且跨实例共享。
您应该在AController的属性_login上使用 static 关键字来获得所需的结果。
然而,正确的解决方案是将login作为构造函数参数传递给BController和CController构造函数,以便它们共享相同的登录实例。
如果这些控制器是MVC控制器,为什么还需要在同一个请求中实例化它们?
答案 1 :(得分:0)
我不确定我在说什么,但要访问这些数据,您的对象是否需要继承您的超类?