Generics without Casting - C#