The current class library I am working on will have a base class (Field) with over 50 specific "field" types which will inherit from "Field" and nested for maintain readability. For example...
abstract class Field
{
public int Length { get; set; }
public class FieldA : Field
{
public static void DoSomething()
{
Console.WriteLine("Did something.");
}
}
}
So far everything looks good and I can use the code as shown:
class Program
{
static void Main(string[] args)
{
Field.FieldA.DoSomething();
}
}
However, why does this work as well? What is going on here that allows the compiler / IDE intellisense to continue to chain these "FieldA"'s?
class Program
{
static void Main(string[] args)
{
Field.FieldA.FieldA.FieldA.FieldA.FieldA.FieldA.FieldA.DoSomething();
}
}
It's not application breaking by any means, but thought it was peculiar. Does the same thing in Boo (which is the actual language being used for the library).