public void AddTransient <T>(object implementation) { var dependency = new Dependency(typeof(T), LifeTime.Transient); dependency.AddImplementation(implementation); _dependencies.Add(dependency); }
public void AddSingleton <T>(object implementation) { var dependency = new Dependency(typeof(T), LifeTime.Singleton); dependency.AddImplementation(implementation); _dependencies.Add(dependency); }
public object CreateImplementation(Dependency dependency, Func <Type, object> factory) { if (dependency.Implemented) { return(dependency.Implementation); } var implementation = factory(dependency.Type); if (dependency.LifeTime == DependencyLifetime.Singleton) { dependency.AddImplementation(implementation); } return(implementation); }