A little while ago, I mentioned how new tuple handling in protobuf-net meant that likely-looking tuples could now be handled automatically, and even better this meant I could remove my hacky KeyValuePair<,>
handling. All was well in the world – after all, what could go wrong?
Answer: Mono.
Actually, I’m not criticizing the Mono implementation really, but simply: Mono has a subtly different implementation of KeyValuePair<,>
to Microsoft – nothing huge; simply there exist some set
accessors (private ones, visible here). And the library was pretty fussy – if there was a set
it wouldn’t be treated as a sure-thing tuple.
This is now fixed in r447, but: if you are using Mono and your dictionaries stopped serializing – then honestly and humbly: sorry about that.
And if you are a library author – watch out: sometimes the simplest most subtle differences between implementations can kill you.