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?