So, wasn't this the exact reason why we had the GAC in .NET framework ?


If I have referenced MyLogger.dll that implements ILogger() in MyWebPart.dll;

and if I happen to upgrade MyLogger.dll to version 2.0 (which uses a different implementation, but the interface is the same);

I should be able to configure my environment to use MyLogger.dll version 2.0 using .NET configuration.  


Why do we need a service locator if the GAC can provide us the (modified) assembly to use at runtime?


Doesn't this add more complexity and configuration requirement to the whole project?