Exemplo n.º 1
0
        public static IHandler GetHandler([NotNull] this IAgentConfig agentConfig, [CanBeNull] string eventName,
                                          [CanBeNull] string handlerName)
        {
            if (eventName == null || handlerName == null)
            {
                return(null);
            }

            var prop = agentConfig.GetType().GetProperty(eventName);

            if (prop == null)
            {
                return(null);
            }

            return(agentConfig.GetHandlers(prop).SingleOrDefault(x => x.GetType().Name == handlerName));
        }
Exemplo n.º 2
0
        public static IEnumerable <IHandler> GetHandlers([NotNull] this IAgentConfig agentConfig,
                                                         [NotNull] PropertyInfo propertyInfo)
        {
            if (agentConfig == null)
            {
                throw new ArgumentNullException(nameof(agentConfig));
            }
            if (propertyInfo == null)
            {
                throw new ArgumentNullException(nameof(propertyInfo));
            }

            if (!agentConfig.GetType().IsAssignableFrom(propertyInfo.DeclaringType))
            {
                throw new ArgumentException("PropertyInfo is not declared on the type of agent config.",
                                            nameof(propertyInfo));
            }

            var list = (IList)propertyInfo.GetValue(agentConfig, new object[0]);

            return(list.Cast <IHandler>());
        }