private void ResolveArgument(GraphArgumentInfo argument, IResolutionContext resolutionContext) { if (argument.IsInjected) { object obj; var argumentType = (TypeInfo)argument.Type.AttributeProvider; if (argumentType.AsType() == typeof(IResolutionContext) || argumentType.ImplementedInterfaces.Any(iface => iface == typeof(IResolutionContext))) { obj = resolutionContext; } else if (argumentType.AsType() == typeof(IUserContext) || argumentType.ImplementedInterfaces.Any(iface => iface == typeof(IUserContext))) { obj = resolutionContext.UserContext; } else if (argumentType.AsType() == typeof(CancellationToken)) { obj = resolutionContext.CancellationToken; } else { obj = resolutionContext.DependencyInjector?.Resolve(argumentType); } resolutionContext.SetArgument(argument.Name, obj); } else { var argumentValue = resolutionContext.GetArgument(argument); resolutionContext.SetArgument(argument.Name, Wrapper.Wrap(argument, argument.Type, argumentValue, true)); } }