Не удается неявно преобразовать MyType <Foo> в MyType <IFoo>

Я не уверен, является ли это проблемой Ковариации и Контравариантности, но я не могу заставить это работать. Вот код:

public interface IDto { }

public class PaginatedDto<TDto> where TDto : IDto {

    public int PageIndex { get; set; }
    public int PageSize { get; set; }
    public int TotalCount { get; set; }
    public int TotalPageCount { get; set; }

    public bool HasNextPage { get; set; }
    public bool HasPreviousPage { get; set; }

    public IEnumerable<TDto> Dtos { get; set; }
}

public class PersonDto : IDto {

    public int Id { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public int Age { get; set; }
}

class Program {

    static void Main(string[] args) {

        var people = new List<PersonDto> { 
            new PersonDto { },
            new PersonDto { },
            new PersonDto { },
        };

        var paginatedPersonDto = new PaginatedDto<PersonDto>() { 
            Dtos = people
        };

        //ProcessDto doesn't accept this
        ProcessDto(paginatedPersonDto);
    }

    private static void ProcessDto(PaginatedDto<IDto> paginatedDto) { 

        //Do work...
    }
}

Почему-то не могу пройтиPaginatedDto<PersonDto> какPaginatedDto<IDto> вProcessDto метод. Любая идея, как я могу решить эту проблему?

Ответы на вопрос(1)

Ваш ответ на вопрос