Abstraction in C#