我正在处理的当前类库将有一个基类(Field),它有超过50种特定的“字段”类型,它们将继承自“Field”并嵌套以保持可读性。例如......
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 intellisense继续链接这些“FieldA”?
class Program
{
static void Main(string[] args)
{
Field.FieldA.FieldA.FieldA.FieldA.FieldA.FieldA.FieldA.DoSomething();
}
}
它不是以任何方式打破应用程序,但认为它是特殊的。在Boo中是否存在相同的东西(这是用于库的实际语言)。
答案 0 :(得分:4)
听起来像你想要的东西:
abstract class Field
{
public int Length { get; set; }
}
public class FieldA : Field
{
public static void DoSomething()
{
Console.WriteLine("Did something.");
}
}
否则你要定义一个内部类的基类,继承者也会得到它。所以当你继承外部类来创建内部类时,你就开始了一个循环。
答案 1 :(得分:2)
Field
有一个名为FieldA
的 public 嵌套类FieldA
继承自Field
FieldA
访问FieldA
。引用不是创建无限链,它只是指向同一个类。 (some test code)
当您访问FieldA.FieldA
时,后者FieldA
是可访问的,因为前FieldA
是Field
的实例,因此后者FieldA
实际访问Field.FieldA
答案 2 :(得分:1)
FieldA继承对类FieldA的引用,该类继承对类FieldA的引用,该类继承对类FieldA的引用,该类继承对类FieldA的引用,该类继承对类FieldA的引用,该类继承对继承引用的类FieldA的引用类FieldA ......
它的作用是因为就是你告诉它的。