public void ProcessStepDefinitionsFromAssembly(string assemblyPath, IBindingSourceProcessor bindingSourceProcessor)
        {
            ModuleDefinition module = ModuleDefinition.ReadModule(assemblyPath);

            foreach (TypeDefinition typeDefinition in module.Types)
            {
// ReSharper disable PossibleMultipleEnumeration
                var filteredAttributes = typeDefinition.CustomAttributes.Where(attr => bindingSourceProcessor.CanProcessTypeAttribute(attr.AttributeType.FullName));
                if (!bindingSourceProcessor.PreFilterType(filteredAttributes.Select(attr => attr.AttributeType.FullName)))
                {
                    continue;
                }

                var bindingSourceType = CreateBindingSourceType(typeDefinition, filteredAttributes);

                if (!bindingSourceProcessor.ProcessType(bindingSourceType))
                {
                    continue;
                }

                foreach (var methodDefinition in typeDefinition.Methods)
                {
                    bindingSourceProcessor.ProcessMethod(CreateBindingSourceMethod(methodDefinition, bindingSourceType, bindingSourceProcessor));
                }

                bindingSourceProcessor.ProcessTypeDone();
// ReSharper restore PossibleMultipleEnumeration
            }
        }
 private BindingSourceMethod CreateBindingSourceMethod(MethodDefinition methodDefinition, BindingSourceType bindingSourceType, IBindingSourceProcessor bindingSourceProcessor)
 {
     return new BindingSourceMethod
                {
                    BindingMethod = new BindingMethod(bindingSourceType.BindingType, methodDefinition.Name, GetParameters(methodDefinition), GetReturnType(methodDefinition)), 
                    IsPublic = methodDefinition.IsPublic,
                    IsStatic = methodDefinition.IsStatic,
                    Attributes = GetAttributes(methodDefinition.CustomAttributes.Where(attr => bindingSourceProcessor.CanProcessTypeAttribute(attr.AttributeType.FullName)))
                };
 }
        public void ProcessStepDefinitionsFromAssembly(string assemblyPath, IBindingSourceProcessor bindingSourceProcessor)
        {
            ModuleDefinition module = ModuleDefinition.ReadModule(assemblyPath);
            foreach (TypeDefinition typeDefinition in module.Types)
            {
// ReSharper disable PossibleMultipleEnumeration
                var filteredAttributes = typeDefinition.CustomAttributes.Where(attr => bindingSourceProcessor.CanProcessTypeAttribute(attr.AttributeType.FullName));
                if (!bindingSourceProcessor.PreFilterType(filteredAttributes.Select(attr => attr.AttributeType.FullName)))
                    continue;

                var bindingSourceType = CreateBindingSourceType(typeDefinition, filteredAttributes);

                if (!bindingSourceProcessor.ProcessType(bindingSourceType))
                    continue;

                foreach (var methodDefinition in typeDefinition.Methods)
                {
                    bindingSourceProcessor.ProcessMethod(CreateBindingSourceMethod(methodDefinition, bindingSourceType, bindingSourceProcessor));
                }

                bindingSourceProcessor.ProcessTypeDone();
// ReSharper restore PossibleMultipleEnumeration
            }
        }
 private BindingSourceMethod CreateBindingSourceMethod(MethodDefinition methodDefinition, BindingSourceType bindingSourceType, IBindingSourceProcessor bindingSourceProcessor)
 {
     return(new BindingSourceMethod
     {
         BindingMethod = new BindingMethod(bindingSourceType.BindingType, methodDefinition.Name, GetParameters(methodDefinition), GetReturnType(methodDefinition)),
         IsPublic = methodDefinition.IsPublic,
         IsStatic = methodDefinition.IsStatic,
         Attributes = GetAttributes(methodDefinition.CustomAttributes.Where(attr => bindingSourceProcessor.CanProcessTypeAttribute(attr.AttributeType.FullName)))
     });
 }