public static SerializationCallbacks GetSerializationCallbacks(Type t)
{
SerializationCallbacks sc;
if (cache.TryGetValue(t, out sc))
return sc;
// Slow path, new entry, we need to copy
lock (cache_lock) {
if (!cache.TryGetValue(t, out sc)) {
var copy = new Dictionary<Type, SerializationCallbacks>(cache);
sc = new SerializationCallbacks(t);
copy[t] = sc;
cache = copy;
}
return sc;
}
}