Type Inference strategies? - C#