示例#1
0
        /// <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);
        }