I see...I think this will likely be far easier to implement with an export provider.
With a simple export provider you won't need to do all that work. Instead what you would do is create exports on the fly to match the imports coming in. For example in the CSL EP I linked to above, here is the code that creates an export to pull from an
var export = new Export(definition.ContractName, () => serviceLocator.GetInstance(contractType));
In your case your export should call your DP. So if a part imports IOrderService, you would then create an export which invokes your DP mechanism to create it.