fb2f846159
* Add DataProviderEventArgs base class for IDataProviderEvents event args This base class includes a Symbol property. This will empower event listeners to make decisions based on which security (symbol) raised the event. The immediate use case is preventing multiple numerical precision messages for the same security. This pattern can equally be applied to other error messages that are raised each time a security is added to a universe. See: #BUG-4722 * Update ConcurrentSet.Add to use ISet<T>.Add returning bool It's a very common pattern to use if (set.Add(item)) which is enabled via bool ISet<T>.Add(item) but not enabled via void ICollectiont<T>.Add(item). This change simples changes the default Add implementation to use the ISet<T> overload and relegates the ICollection<T>.Add implementation to be explicit. See: #BUG-4722 * Prevent multiple numerical precision messages for same symbol If a security is continually added/removed from a universe, then the user will see this message each time the security is added. This results in some spam. This change simply remembers for which symbols we've notified the user about the numerical precision issue. Fixes: #BUG-4722