NVI pattern in C#