Loading dynamically-named classes in a plugin's service
Rather than assuming that the providers will live in a specific location, I'd be inclined to implement a custom hook, which allows third party plugins to register a new provider.

This also allows third parties to do any initialisation of their provider, prior to handing it to you.

For example, your plugin could do something like this:

$providers = craft()-&gt;plugins-&gt;call('registerProviders');


And a third party could then do something like this, in its main plugin file:

public function registerProviders()
{
    $instance = new MyProvider('custom', 'dependencies');

    return ['myProvider' =&gt; $instance];
}


Greatly simplified, but hopefully you get the idea.