I know that with Ninject 1, it was possible to give specific instances depending on the parameter name.
E.g public SomeClass(ISomething left, ISomething right) {}
would resolve ISomething left to the default ISomething, but ISomething right to a different binding.
How can I do this with Ninject 2+?
Note: I do not want to use [Named("XZ")], because that would force me to make the main dll of my application a dependency of Ninject. Right now I have a separate DLL CompositionRoot that depends on Ninject, and nothing else: my main dll can be used without Ninject. I would like to keep it that way.
Edit: I updated the example to use left/right instead of simple/complex after the first answer. I do not want to hardcode this dependency in my inheritance structure.