Rather than reading a string and then doing a dictionary lookup we
create a simple automata based on the names of the members, returning
the index of the setter method
Added a simple automata to read member names
NB. This still needs to be extended for enums, as well as handling the case of escaped members.
Merge remote-tracking branch 'origin/master' into string-automata
Fixed NameAutomata to handle escaped characters
I should put a more direct test in; i.e. the one at the moment relies on
turning off UseHashWhenMatchingMembers, but if that internal code was
changed then this isn't a strong guarentee that the Automata code path
The handling of escaped characters has been added
remove hashing from non-anonymous member lookups; closes #47
In testing this appears to be faster than hashing (in addition to being faster than dictionary lookups).
I haven't quite removed all of the hashing code though. It's still used in enum matching (as you've noted) and matching anonymous member names.
Anonymous types are a little fun since we have to create them via their constructor, rather than setting the properties after using the default constructor.
Removing the rest of hashing would be a good follow up PR.