private void AddConfigPortableFactories(IDictionary <int, IPortableFactory> portableFactories, SerializationConfig config) { foreach (var entry in config.GetPortableFactories()) { var factoryId = entry.Key; var factory = entry.Value; if (factoryId <= 0) { throw new ArgumentException("IPortableFactory factoryId must be positive! -> " + factory); } if (portableFactories.ContainsKey(factoryId)) { throw new ArgumentException("IPortableFactory with factoryId '" + factoryId + "' is already registered!"); } portableFactories.Add(factoryId, factory); } foreach (var entry in config.GetPortableFactoryClasses()) { var factoryId = entry.Key; var factoryClassName = entry.Value; if (factoryId <= 0) { throw new ArgumentException("IPortableFactory factoryId must be positive! -> " + factoryClassName); } if (portableFactories.ContainsKey(factoryId)) { throw new ArgumentException("IPortableFactory with factoryId '" + factoryId + "' is already registered!"); } var type = Type.GetType(factoryClassName); if (type == null) { throw new HazelcastSerializationException("Unable to find type " + factoryClassName); } if (!typeof(IPortableFactory).IsAssignableFrom(type)) { throw new HazelcastSerializationException("Type " + type + " does not implement IPortableFactory"); } var factory = Activator.CreateInstance(type) as IPortableFactory; portableFactories.Add(factoryId, factory); } foreach (var f in portableFactories.Values) { if (f is IHazelcastInstanceAware) { ((IHazelcastInstanceAware)f).SetHazelcastInstance(_hazelcastInstance); } } }