A ValueService is used to share data among objects
You have built a system of components and shared objects, but don't use its potential. In fact, for your use case the complete setup is an overkill.


There is no component hierarchy
There are no component-sensitive or -specific values
You only need a single component to verify any incoming request



 public IActionResult postData(
        [FromRoute] string norm, 
        [FromRoute] string component, 
        [FromBody] ValueViewModel[] data)
    {
        Project project = new Project(norm);
        project.SetValues(data);
        return Ok(project.Valid(component));
    }



For the aforementioned reasons, I don't see a need for having a list of components and values. I would rewrite the API to be as simple as possible:


Let the factory retrieved by FactoryGenerator get the requested component
Let that component validate the input values


code:

public IActionResult postData(
        [FromRoute] string norm, 
        [FromRoute] string component, 
        [FromBody] ValueViewModel[] data)
    {
        var component = FactoryGenerator.GetFactory(norm).GetComponent(component);
        return Ok(component.Valid(data));
    }