【发布时间】:2012-03-06 08:32:38
【问题描述】:
这可能是一个非常愚蠢的问题,它让我感觉我的大脑已经消失了......但我无法理解如何从 Base 类中设置受保护或公共变量。
我有一个在 Base 类中使用的 Enum,但必须在 Inheriting 类中设置。 Inheriting 类几乎没有代码,所以我特别想在方法之外执行此操作。
我想要的一个例子:
public class MyBase {
protected myEnum;
}
public class MyClass : MyBase {
myEnum = SomeValue;
}
如果我使用 get/set 将 myEnum 设置为属性,我可以覆盖它...但我最终会得到更多代码行。
如果我重写 Page_Load 我可以访问 this.myEnum 但同样,我想在方法之外访问它,因为它是 Inheriting 类中的唯一代码。
我在这里遗漏了一些完全明显的东西吗?
【问题讨论】:
-
尝试在构造函数或[其他]方法中分配实例变量。 (阅读错误消息,了解为什么它不喜欢上面的示例语法。)或者,使用继承类中定义的虚拟“getter”或反转它以使用事件等。使用
static可能是......不明智。 -
@pst : 解释一下这个“虚拟吸气剂”?我不想重写整个属性(这会给我 5 行代码来分配这个值。
-
是什么让你认为你不能使用构造函数?
-
@s_hewitt :因为该类从未在我的代码中实例化。这是一个网页,所以用户只需导航到它。
-
正确。构造函数仍会调用,ASP.NET 将如何从您的类构建页面?它必须在某个时候创建该类的实例。
标签: c# inheritance base-class