Текущая библиотека классов, над которой я работаю, будет иметь базовый класс (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 (это фактический язык, используемый для библиотеки).