Category Programming in C#