mongodb/mongo-csharp-driver — comment on commit 4c1b6d2a80cf1b9b87157b9d758ebe63d864b9ef
File:  line 0
By craiggwilson:

Got it. Therefore, in this case, I think it would be ok to not use the lock anyway. Instead of using add, simply assign it: delegates[type] = newDelegate;

Readers won't be afffected, and the only downside is that it might get generated more than once. That is ok in this because it probably takes less time to generate than to wait for the lock to free up. In addition, after it is generated initially, future readers will always get the generated instance.

As for when to give up on 3.5, I don't think you can yet unfortunately. I'd probably announce deprecation for 1.5 or something.