Example #1
0
        static SerializerSelector()
        {
            // Do a two step initialization to make sure field is set and accessible during construction
            Default = new SerializerSelector(false, -1, "Default");
            Default.Initialize();

            Asset = new SerializerSelector(false, -1, "Default", "Content");
            Asset.Initialize();

            AssetWithReuse = new SerializerSelector(true, -1, "Default", "Content");
            AssetWithReuse.Initialize();
        }
Example #2
0
        public override DataSerializer GetSerializer(SerializerSelector selector, [NotNull] Type type)
        {
            DataSerializer dataSerializer;

            if (!serializersByType.TryGetValue(type, out dataSerializer))
            {
                if (baseType.GetTypeInfo().IsAssignableFrom(type.GetTypeInfo()))
                {
                    dataSerializer = (DataSerializer)Activator.CreateInstance(serializerGenericType.MakeGenericType(type));
                    selector.EnsureInitialized(dataSerializer);
                    serializersByTypeId.TryAdd(dataSerializer.SerializationTypeId, dataSerializer);
                }
                // Add it even if null (so that failures are cached too)
                serializersByType.TryAdd(type, dataSerializer);
            }
            return(dataSerializer);
        }
Example #3
0
 public static void RegisterSerializerSelector(SerializerSelector serializerSelector)
 {
     SerializerSelectors.Add(new WeakReference <SerializerSelector>(serializerSelector));
 }
Example #4
0
 /// <summary>
 /// Initializes the specified serializer.
 /// </summary>
 /// <remarks>This method should be thread-safe and OK to call multiple times.</remarks>
 /// <param name="serializerSelector">The serializer.</param>
 public virtual void Initialize([NotNull] SerializerSelector serializerSelector)
 {
 }
Example #5
0
 public abstract DataSerializer GetSerializer(SerializerSelector selector, Type type);
Example #6
0
 public abstract DataSerializer GetSerializer(SerializerSelector selector, ref ObjectId typeId);