【问题标题】:Access child class variable from base class从基类访问子类变量
【发布时间】:2013-01-16 20:48:15
【问题描述】:
class a : System.UI.Page {
int ab= c;
}
class b : a
{
public int c= 0;
}

我无法访问它。我可以通过 asp.net 中的Control.NamingContainer 属性访问页面上的任何控件,但 我必须从表单中的类(即 a 类)访问公共变量(即 b 类),这样我没有用我的 50 种形式编写特定的方法。

【问题讨论】:

  • 类 b 是否继承自 System.Web.UI.Page?为什么不将属性放在基类上,因为所有继承的类都可以访问它?
  • 类 a 继承自 System.Web.UI.Page。
  • 作为我的参考,你可以发布带有 getter n setter 和所有很酷的东西的完整类
  • @Aaron Hawkins。似乎是一个很好的解决方案,我会看看它。谢谢
  • 没问题,我给你写一个回答。

标签: c# asp.net .net oop inheritance


【解决方案1】:

您可以将变量放在基类上,以便继承的类可以访问它。例如:

class a : System.UI.Page
{
    protected int c = 0;
}

class b : a
{
    protected void DoSomething()
    {
        c = 1; //Access c from derived class.
    }
}

此外,如果此属性不是特定于实例的,您始终可以在 Global.asax 文件中使用静态属性,该文件可以从 ASP.NET 应用程序中的任何位置访问。如果它是特定于会话的,您可以简单地让属性访问会话并从那里存储/检索值,以便每个用户会话都有自己的值。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    我认为您以错误的方式使用继承。试试这个,它应该可以工作:

    public class a : b {
        int ab = c;
    }
    
    public class b : System.UI.Page
    {
        public int c = 0;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-05-05
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多