Some people tend to use Tuples extensively. This in my opinion is making the code harder to understand since one looses the semantics of the content in the tuple. Let's say I want to store the name and length of a person. If I do this using a tuple I end up with Tuple<string, float>. This might be obvious where created, at least if the variable is named personNameAndLength. Unfortunatelly this is rarely the case. This tuple is typically passed to some other method and named personInfo. Now what does personInfo.Item2 represent? I Know it's a float but what is its semantics. In my opinon this is bad code. A better way would be to actually create a class (or struct) with the properties/fields named Name and Length. However, people are lazy and tend to take the easiest path forward.
To solve this I suggest a Tuple<T1, T2, ...> to class/struct converter.
The user should be prompted to specify:
1. class/struct with name
3. name of fields
For the specific usage of a tuple, lets say.
var personNameAndLength = registry.GetPersonInfo("..."); // Returns Tuple<string, float>
the signature of DoStuffWIthPerson should obviously be updated with the name of the new type and the usage trail of that specific Tuple should be followed throughout the entire code base.