Visitor Pattern in C#