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))) }); }