Multi-Dispatch in C#