【发布时间】:2009-01-18 21:28:12
【问题描述】:
我正在处理的当前类库将有一个基类(字段),其中包含 50 多个特定的“字段”类型,这些类型将从“字段”继承并嵌套以保持可读性。比如……
abstract class Field
{
public int Length { get; set; }
public class FieldA : Field
{
public static void DoSomething()
{
Console.WriteLine("Did something.");
}
}
}
到目前为止,一切看起来都不错,我可以使用如下所示的代码:
class Program
{
static void Main(string[] args)
{
Field.FieldA.DoSomething();
}
}
但是,为什么这也有效?这里发生了什么,允许编译器/IDE 智能感知继续链接这些“FieldA”?
class Program
{
static void Main(string[] args)
{
Field.FieldA.FieldA.FieldA.FieldA.FieldA.FieldA.FieldA.DoSomething();
}
}
这绝不是应用程序破坏,但认为它很奇怪。在 Boo 中做同样的事情(这是用于库的实际语言)。
【问题讨论】:
-
大声笑,这实际上很酷。必须自己测试才能相信它:p
-
您的方法是合理的,特别是如果您想控制谁可以派生:将基本构造函数设为私有,并且只有嵌套类型可以从中派生。当我尝试使用更丰富的 OO 语义来模拟“枚举”行为时,我会使用类似的东西。
-
让我想起了“月亮指导学生”
-
我有明显的逻辑疏忽。感谢您的回复。
-
内部构造函数也会限制谁可以继承它......
标签: c# .net boo nested-class class-structure