private ZooKeeperClient(CuratorFramework curator, ILog log, ConnectionStringRandomizer connectionStringRandomizer) { this.connectionStringRandomizer = connectionStringRandomizer; Curator = curator; Curator.getConnectionStateListenable() .addListener( new ConnectionListener( state => { RandomizeConnectionStringIfNeeded(state); if (ConnectionStateChanged != null) { ConnectionStateChanged(state); } }) ); baseLog = log; Log = log.ForContext("ZK"); InterceptLogger(); watcherWrappers = new ConcurrentDictionary <IWatcher, WatcherWrapper>(new ReferenceEqualityComparer <IWatcher>()); }