When to use object or dynamic type - C#