Текущая библиотека классов, над которой я работаю, будет иметь базовый класс (Field) с более чем 50 конкретными типами «field», которые будут наследоваться от «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();
}
}
Однако, почему это работает? Что здесь происходит, что позволяет intellisense компилятора / IDE продолжать связывать эти "FieldA"?
class Program
{
static void Main(string[] args)
{
Field.FieldA.FieldA.FieldA.FieldA.FieldA.FieldA.FieldA.DoSomething();
}
}
Это не нарушение работы приложений, но я подумал, что это было странно. Делает то же самое в Boo (это фактический язык, используемый для библиотеки).