Inside DynamicClassFactory.CreateType it appears to be attempting to cache previously generated types with the same property names. However it is using different strategies for creating the dictionary key when doing the lookups:
string fullName = string.Join("|", names.Select(Escape).ToArray());
if (!GeneratedTypes.TryGetValue(fullName, out type))
and then later when doing the updates:
type = GeneratedTypes.GetOrAdd(fullName + "|_" + (createParameterCtor ? "1" : "0"), type);
Inside
DynamicClassFactory.CreateTypeit appears to be attempting to cache previously generated types with the same property names. However it is using different strategies for creating the dictionary key when doing the lookups:and then later when doing the updates:
type = GeneratedTypes.GetOrAdd(fullName + "|_" + (createParameterCtor ? "1" : "0"), type);