/// <summary> /// compares two instances of this class for equality. /// </summary> /// <param name="obj"></param> /// <returns></returns> public override bool Equals(object obj) { NosDBDependencyListener listener = obj as NosDBDependencyListener; if (listener != null) { bool key = _cacheKey.Equals(listener._cacheKey); bool conn = _connString.Equals(listener._connString); bool query = _queryString.Equals(listener._queryString); if (key && conn && query) { return(true); } } return(false); }
/// <summary> /// Create and initialize dependency listener and Add it to the listener list and /// </summary> /// <param name="key">key used to reference object</param> /// <param name="connString">connection string used to connect to database</param> /// <param name="queryString">query string for which dataset is created to be monitored</param> /// <param name="doInitialize"></param> /// <param name="hintType"></param> /// <returns></returns> public bool Add(string key, string connString, string queryString, bool doInitialize, ExpirationHintType hintType) { DependencyListener listener = null; if (hintType == ExpirationHintType.OracleCacheDependency) { #if NET40 string fullAssemblyName = "Alachisoft.NCache.RuntimeDependencies, Version=" + Assembly.GetExecutingAssembly().GetName().Version; System.Reflection.Assembly assembly = System.Reflection.Assembly.Load(fullAssemblyName); Type factoryType = assembly.GetType("Alachisoft.NCache.RuntimeDependencies.DependencyListenerFactory"); Object[] oDLArgs = new Object[7]; oDLArgs[0] = key; oDLArgs[1] = connString; oDLArgs[2] = queryString; oDLArgs[3] = this; oDLArgs[4] = this; oDLArgs[5] = _context.NCacheLog; oDLArgs[6] = hintType; Object dLFactory = Activator.CreateInstance(factoryType); MethodInfo dLFactoryCreateMethod = factoryType.GetMethod("Create"); listener = (DependencyListener)(dLFactoryCreateMethod.Invoke(dLFactory, oDLArgs)); #else return(true); #endif } else if (hintType == ExpirationHintType.SqlYukonCacheDependency) { if (hintType == ExpirationHintType.SqlYukonCacheDependency) { listener = new YukonDependencyListener(key, connString, queryString, _context, hintType); } else if (hintType == ExpirationHintType.NosDBCacheDependency) { listener = new NosDBDependencyListener(key, connString, queryString, _context, hintType); } } if (doInitialize) { listener.Initialize(); lock (_listeners.SyncRoot) { if (!_listeners.Contains(listener.CacheKey)) { ArrayList _dblistner = new ArrayList(); _dblistner.Add(listener); _listeners[listener.CacheKey] = _dblistner; } else { ArrayList _dblistner = (ArrayList)_listeners[listener.CacheKey]; _dblistner.Add(listener); _listeners[listener.CacheKey] = _dblistner; } } } else { lock (_silentListeners.SyncRoot) { _silentListeners[listener.CacheKey] = listener; } } return(true); }