private object GetImplementation(DependencyImplementation implementation) { object resolved; if (configuration.lifetimeSettings[implementation.Implementation]) { if (configuration.objectContainer[implementation.Implementation].instance == null) { lock (configuration.objectContainer[implementation.Implementation].syncRoot) { if (configuration.objectContainer[implementation.Implementation].instance == null) { configuration.objectContainer[implementation.Implementation].instance = GetInstance(implementation.Implementation); } } } resolved = configuration.objectContainer[implementation.Implementation].instance; } else { resolved = GetInstance(implementation.Implementation); } return(resolved); }
private TDependency GetGenericTypeImplementation <TDependency>(Type tDependency, DependencyImplementation implementation) { var genericType = implementation.Implementation.MakeGenericType(tDependency.GetGenericArguments()); var resolved = (TDependency)GetInstance(genericType); return(resolved); }