1

When I inherit from a base class, Visual Studio (v2008 here) informs me about all MustInherit members that need to be created in the derived class, which is very handy.

However, I also want my derived class to define some shared members - the values of which will be different for each derived class. Unfortunately, .NET doesn't allow MustInherit on shared members in a base class.

Is there any other way of getting Visual Studio to remind me that my derived class should also include certain specific shared members?

4

2 回答 2

1

不,没有办法做到这一点——老实说,这听起来像是一种设计的味道。

拥有成员的一半意义MustInherit在于您可以从基类中的代码访问它们。这不适合Shared成员,因为没有指示访问哪个类的共享成员。

您没有给我们任何上下文来解释您为什么要这样做,但我建议您尝试寻找不同的设计。例如,有时具有并行继承层次结构(例如,一个用于“工厂”,一个用于实例)可能很有用 - 那么您可能以其他方式创建的成员Shared将是工厂类型中的实例成员。不过,这确实取决于您要达到的目标。

于 2013-10-06T08:07:56.920 回答
0

听起来您正在尝试在无法正常工作的类级别上使用多态性。

        int result = ParentClass.STATIC_VALUE;
        int result2 = ChildClass.STATIC_VALUE;
        int result3 = AnotherChildClass.STATIC_VALUE;

假设 STATIC_VALUE 设置为不同的值。由于没有实例与这三个类中的任何一个相关联,您希望 .Net 如何选择“正确”值?

ParentClass 将始终具有它的定义值,而不是基类的值。ChildClass 将具有 ParentClass 的值,或者 - 如果已定义 - 它是隐藏 ParentClass 值的自己的值。

为了检索继承类的值,您总是必须显式调用此类。没有办法使用多态行为。

在 .NET 中,基类能否以某种方式确保派生类定义共享成员?

它将自动定义,但您不能确保稍后处理您的基类的其他程序员必须定义自己的值。您应该重新考虑您的问题是否可以通过使用类成员或属性来解决。

于 2013-10-06T08:39:27.813 回答