/// <summary> /// We dont include baseclasses if we find derived, but it's actually possible that we get multiple derived of the same baseclass, thus we return a list /// </summary> /// <param name="pipeline"></param> /// <returns></returns> protected virtual List <Type> GetAllProcessorArgTypes(CorePipeline pipeline) { var types = new List <Type>(); var processors = ReflectionService.GetProcessors(pipeline); foreach (var p in processors) { var processorType = ReflectionService.GetProcessorType(p); var methodInfo = GetMethodInfo(processorType, p.MethodName, new[] { typeof(PipelineArgs) }); if (methodInfo != null) { var type = methodInfo.GetParameters()[0].ParameterType; if (!types.Contains(type) && !types.Any(t => type.IsAssignableFrom(t))) { types.RemoveAll(t => t.IsAssignableFrom(type)); types.Add(type); } } } return(types); }