Ejemplo n.º 1
0
            void RegisterEntityDescriptor(ISerializableEntityDescriptor descriptor)
            {
                if (descriptor == null)
                {
                    return;
                }

                uint descriptorHash = descriptor.hash;

#if DEBUG && !PROFILE_SVELTO
                if (_descriptors.ContainsKey(descriptorHash))
                {
                    throw new Exception($"Hash Collision of '{descriptor.GetType()}' against " +
                                        $"'{_descriptors[descriptorHash]} ::: {descriptorHash}'");
                }
#endif

                _descriptors[descriptorHash] = descriptor;
            }
            static void RegisterEntityDescriptor(ISerializableEntityDescriptor descriptor, Type type, Type d1)
            {
                if (descriptor == null)
                {
                    return;
                }

                uint descriptorHash = descriptor.hash;

#if DEBUG && !PROFILE_SVELTO
                if (_descriptors.ContainsKey(descriptorHash))
                {
                    throw new Exception($"Hash Collision of '{descriptor.GetType()}' against "
                                        + $"'{_descriptors[descriptorHash]} ::: {descriptorHash}'");
                }
#endif
                _descriptors[descriptorHash] = descriptor;
                Type[] typeArgs        = { type };
                var    makeGenericType = d1.MakeGenericType(typeArgs);
                var    instance        = Activator.CreateInstance(makeGenericType);
                _defaultFactories.Add(descriptorHash, instance as IDeserializationFactory);
            }