private void AddConfigPortableFactories(IDictionary<int, IPortableFactory> portableFactories, SerializationConfig config) { foreach (var entry in config.GetPortableFactories()) { int factoryId = entry.Key; IPortableFactory 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()) { int factoryId = entry.Key; string 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 (IPortableFactory f in portableFactories.Values) { if (f is IHazelcastInstanceAware) { ((IHazelcastInstanceAware)f).SetHazelcastInstance(_hazelcastInstance); } } }