public EventListenerConfig Add(EventListenerConfig config)
{
if (config == null) throw new ArgumentNullException("config");
if (listeners.ContainsKey(config.ListenerType))
throw new ArgumentException(string.Format("Configuration for Listener Type {0} is already present.", config.ListenerType.FullName), "config");
var events = GetEventTypes(config.ListenerType);
if (events.Length == 0)
throw new ArgumentException(string.Format("The Listener of type {0} does not implement any known NHibernate event listener interfaces.", config.ListenerType.FullName), "config");
listeners.Add(config.ListenerType, config);
foreach (var eventType in events)
{
if (!listenersPerEvent.ContainsKey(eventType))
listenersPerEvent.Add(eventType, new HashedSet<Type>());
listenersPerEvent[eventType].Add(config.ListenerType);
}
return config;
}