c# - LightInject IoC container resolve type by a custom method? -


is possible in lightinject ioc resolve type based on custom method?

eg resolver call method this

public interface imytype {} public class myeventype : imytype {} public class myoddtype : imytype {} public static int foo;      public static imytype resolvetype() {    if (foo % 2 == 0)        return myeventype;    return myoddtype; } 

how write container.register method calls above method in order resolve dependency?

lightinject allows register specific methods factory resolver methods allow construct type when resolve interface.

public class mytyperesolver {     public static int foo;         public static imytype resolvetype()     {         if (foo % 2 == 0)             return new myeventype();         return new myoddtype();     } } 

when registering interface, instead of registering concrete type, register factory method returns concrete type.

void main() {     var container = new lightinject.servicecontainer();     container.register<imytype>(factory => mytyperesolver.resolvetype());      var instance1 = container.getinstance<imytype>();     instance1.dump();      mytyperesolver.foo = 1;      var instance2 = container.getinstance<imytype>();     instance2.dump(); } 

instance1 has concrete type of myeventype , instance2 has concrete type of myoddtype.


Comments

Popular posts from this blog

c++ - Difference between pre and post decrement in recursive function argument -

php - Nothing but 'run(); ' when browsing to my local project, how do I fix this? -

php - How can I echo out this array? -