c# - Register default Castle Windsor components while allowing custom components -


i trying implement convention based registration castle windsor, cannot figure out how deal swapping out default implementations of services.

in framework, might have interface service , default implementation:

public interface ilogger {      void info(string message); }  public class logger : ilogger {      public void info(string message)      {          console.writeline(message);      } } 

in typical use case, want castle windsor register logger ilogger service.

however, there use cases client code might provide alternate implementation of ilogger:

public class customlogger : ilogger {     public void info(string message)     {          console.writeline("[log]: {0}", message);     } } 

in use case, want castle windsor register customlogger ilogger service instead of logger.

so far, i've tried tiered approach attempt register default interfaces, followed non-default interfaces:

using (var container = new windsorcontainer()) {     container.register(         classes.fromassemblyindirectory(new assemblyfilter(plugindirectorypath))             .where(type => true)             .withservice.defaultinterfaces(),          classes.fromassemblyindirectory(new assemblyfilter(plugindirectorypath))             .where(type => true)             .withservice.allinterfaces());      var logger = container.resolve<ilogger>();     logger.info("hello, world!"); } 

however, doesn't seem work both logger , customlogger registered ilogger, still logger when resolve ilogger. tips how this?

also, cannot register each component , service individually composition root own executable separate client code, has limited knowledge of services available without doing assembly scanning.

first registered wins, so... register non-default implementations first , register default implementations fill gaps.


Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

[C++][SFML 2.2] Strange Performance Issues - Moving Mouse Lowers CPU Usage -

ios - Possible to get UIButton sizeThatFits to work? -