Another way to implement the Inversion of Control (IoC) principle, in addition to the Dependency Injection, is the plug-in design pattern.

The pattern consists in to load an assembly that implements a common interface at runtime. In this way, a class that depends from an object in an other assemby is completely decoupled from it, or rather, it has no reference to dependent assembly. More...