/// <summary> /// Returns the default serializer settings. /// </summary> /// <returns>The default serializer settings.</returns> public static JsonSerializerSettings GetDefaultSerializerSettings(ITypeResolver typeResolver, IGrainFactory grainFactory) { var serializationBinder = new OrleansJsonSerializationBinder(typeResolver); var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, PreserveReferencesHandling = PreserveReferencesHandling.Objects, DateFormatHandling = DateFormatHandling.IsoDateFormat, DefaultValueHandling = DefaultValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore, NullValueHandling = NullValueHandling.Ignore, ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple, Formatting = Formatting.None, SerializationBinder = serializationBinder }; settings.Converters.Add(new IPAddressConverter()); settings.Converters.Add(new IPEndPointConverter()); settings.Converters.Add(new GrainIdConverter()); settings.Converters.Add(new SiloAddressConverter()); settings.Converters.Add(new UniqueKeyConverter()); settings.Converters.Add(new GrainReferenceConverter(grainFactory, serializationBinder)); return(settings); }
/// <summary> /// Returns the default serializer settings. /// </summary> /// <returns>The default serializer settings.</returns> public static JsonSerializerSettings GetDefaultSerializerSettings(SerializationManager serializationManager, IGrainFactory grainFactory) { var typeResolver = serializationManager.ServiceProvider.GetRequiredService <ITypeResolver>(); var serializationBinder = new OrleansJsonSerializationBinder(typeResolver); var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, PreserveReferencesHandling = PreserveReferencesHandling.Objects, DateFormatHandling = DateFormatHandling.IsoDateFormat, DefaultValueHandling = DefaultValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore, NullValueHandling = NullValueHandling.Ignore, ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple, // Types such as GrainReference need context during deserialization, so provide that context now. Context = new StreamingContext(StreamingContextStates.All, new SerializationContext(serializationManager)), Formatting = Formatting.None, SerializationBinder = serializationBinder }; settings.Converters.Add(new IPAddressConverter()); settings.Converters.Add(new IPEndPointConverter()); settings.Converters.Add(new GrainIdConverter()); settings.Converters.Add(new SiloAddressConverter()); settings.Converters.Add(new UniqueKeyConverter()); settings.Converters.Add(new GrainReferenceConverter(grainFactory, serializationBinder)); return(settings); }
public GrainReferenceConverter(IGrainFactory grainFactory, OrleansJsonSerializationBinder serializationBinder) { this.grainFactory = grainFactory; // Create a serializer for internal serialization which does not have a specified GrainReference serializer. // This internal serializer will use GrainReference's ISerializable implementation for serialization and deserialization. this.internalSerializer = JsonSerializer.Create(new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, PreserveReferencesHandling = PreserveReferencesHandling.None, DateFormatHandling = DateFormatHandling.IsoDateFormat, DefaultValueHandling = DefaultValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore, NullValueHandling = NullValueHandling.Ignore, ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, Formatting = Formatting.None, SerializationBinder = serializationBinder, Converters = { new IPAddressConverter(), new IPEndPointConverter(), new GrainIdConverter(), new SiloAddressConverter(), new UniqueKeyConverter() } }); }
/// <summary> /// Returns the default serializer settings. /// </summary> /// <param name="services"> /// The service provider. /// </param> /// <returns>The default serializer settings.</returns> public static JsonSerializerSettings GetDefaultSerializerSettings(IServiceProvider services) { var typeResolver = services.GetRequiredService <TypeResolver>(); var serializationBinder = new OrleansJsonSerializationBinder(typeResolver); var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, PreserveReferencesHandling = PreserveReferencesHandling.Objects, DateFormatHandling = DateFormatHandling.IsoDateFormat, DefaultValueHandling = DefaultValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore, NullValueHandling = NullValueHandling.Ignore, ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple, Formatting = Formatting.None, SerializationBinder = serializationBinder }; settings.Converters.Add(new IPAddressConverter()); settings.Converters.Add(new IPEndPointConverter()); settings.Converters.Add(new GrainIdConverter()); settings.Converters.Add(new ActivationIdConverter()); settings.Converters.Add(new SiloAddressJsonConverter()); settings.Converters.Add(new MembershipVersionJsonConverter()); settings.Converters.Add(new UniqueKeyConverter()); settings.Converters.Add(new GrainReferenceJsonConverter(services.GetRequiredService <GrainReferenceActivator>())); return(settings); }