/// <summary> /// Creates an object. /// </summary> /// <param name="resolver">The resolver.</param> /// <param name="context">The context.</param> /// <returns>The created object.</returns> private static object CreateObject(IIoCResolver resolver, CreateObjectContext context) { object[] parameters = context.ConstructorArguments .Select(type => resolver.Resolve(type)) .ToArray(); return(context.Constructor.Invoke(parameters)); }
/// <summary> /// Sets an implementation type. /// </summary> /// <typeparam name="TImplementation">The type of the implementation.</typeparam> /// <returns>The builder.</returns> public ObjectFactoryMethodBuilder ImplementationType <TImplementation>() { this.AssertFactoryMethodNotBuilt(); CreateObjectContext context = new CreateObjectContext() { Type = typeof(TImplementation) }; this.factory = resolver => CreateObject(resolver, context); return(this); }