title: Symfony 4 autowiring argument not working
body: <p>I'm trying to autowire the <code>UrlGeneratorInterface</code> into a DTO to use the generate method in my DTO,</p>
  
  <p>I have this in my DTO:</p>
  
  <pre><code>namespace App\DTO;
  
  use JMS\Serializer\Annotation as Serializer;
  use JMS\Serializer\Annotation\ExclusionPolicy;
  use JMS\Serializer\Annotation\Expose;
  use App\Entity\News;
  use App\Application\Sonata\MediaBundle\Entity\Media;
  use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  
  
  /**
   * @ExclusionPolicy("all")
   *
   */
  class NewsDTO
  {
  
      /**
       * @var integer|null
       * @Serializer\Groups({"news"})
       * @Expose
       */
      public $id;
  
      /**
       * @var string|null
       * @Serializer\Groups({"news"})
       * @Expose
       */
      public $title;
  
  
      /**
       * @var string|null
       * @Serializer\Groups({"news"})
       * @Expose
       */
      public $text;
  
      /**
       * @var string|null
       * @Serializer\Groups({"news"})
       * @Expose
       */
      public $cover_image;
  
  
      /**
       * @var string|null
       * @Serializer\Groups({"news"})
       * @Expose
       */
      public $description;
  
      /**
       * @var string|null
       * @Serializer\Groups({"news"})
       * @Expose
       */
      public $web_url;
  
      /**
       * @var string|null
       * @Serializer\Groups({"news"})
       * @Expose
       */
      public $link;
  
      /**
       * @var datetime|null
       * @Serializer\Groups({"news"})
       * @Expose
       */
      private $news_date;
  
      private $router;
  
      public function __construct(UrlGeneratorInterface $urlGenerator){
          $this-&gt;router = $router;
      }
  </code></pre>
  
  <p>and my service.yaml:</p>
  
  <pre><code>parameters:
      locale: 'fr'
  
  services:
      # default configuration for services in *this* file
      _defaults:
          autowire: true      # Automatically injects dependencies in your services.
          autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
  
      # makes classes in src/ available to be used as services
      # this creates a service per class whose id is the fully-qualified class name
      App\:
          resource: '../src/*'
          exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Application,Kernel.php}'
  
      # controllers are imported separately to make sure services can be injected
      # as action arguments even if you don't extend any base controller class
      App\Controller\:
          resource: '../src/Controller'
          tags: ['controller.service_arguments']
  
      dto.news :
          class: App\DTO\NewsDTO
          arguments: 
              $urlGenerator: ['@router.default']
  
      # add more service definitions when explicit configuration is needed
      # please note that last definitions always *replace* previous ones
      admin.videos:
          class: App\Admin\VideoAdmin
          arguments: [~, App\Entity\Video, ~]
          tags:
              - { name: sonata.admin, manager_type: orm, label: Video }
      admin.news:
          class: App\Admin\NewsAdmin
          arguments: [~, App\Entity\News, ~]
          tags:
              - { name: sonata.admin, manager_type: orm, label: Actualités }
      admin.prerolls:
          class: App\Admin\PrerollAdmin
          arguments: [~, App\Entity\Preroll, ~]
          tags:
              - { name: sonata.admin, manager_type: orm, label: Preroll }
  </code></pre>
  
  <p>But the error returned is:</p>
  
  <pre><code> "message": "Too few arguments to function App\\DTO\\NewsDTO::__construct(), 0 passed in /data/www/api-dev.chartres.live/www/src/Representation/Actus.php on line 35 and exactly 1 expected"
  </code></pre>