Casting, reflection or? - C#