Mugen Injection [Registering bindings via reflection]
The MugenInjector supports register binding via reflection.
This code demonstrate how you can register two interfaces(IAlpha, IBeta) to type(Beta):
public interface IAlpha { } public interface IBeta { } public class Alpha : IAlpha { } public class Beta : Alpha, IBeta { } public class Bravo : Beta { } // Create your MugenInjector. _injector = new MugenInjector(); //These code are equivalent _injector.Bind(typeof(IAlpha), typeof(IBeta)).To(typeof(Beta)); _injector.Bind<IAlpha, IBeta>().To<Beta>();
_injector.Bind(typeof (IBeta)).To(typeof (Alpha));
The MugenInjector knows how to distinguish a self-bindable type, and if you write this code, all be work fine:
// Create your MugenInjector. _injector = new MugenInjector(); //Create new instance of Alpha as self-bindable type. var alpha = _injector.Get<Alpha>();
public interface IRepository<T> { } public class Repository<T> : IRepository<T> { } // Create your MugenInjector. _injector = new MugenInjector(); _injector.Bind(typeof (IRepository<>)).To(typeof (Repository<>)); var repository = _injector.Get<IRepository<Alpha>>();