Non sono sicuro che si tratti di un problema di covarianza e controvarianza ma non riesco a farlo funzionare. Ecco il codice:Non è possibile convertire implicitamente MyType
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...
}
}
Per qualche ragione, non posso passare PaginatedDto<PersonDto>
come PaginatedDto<IDto>
-ProcessDto
metodo. Qualche idea su come posso risolvere questo problema?
ah, la mia testa stupido! In realtà l'ho provato, ma ho lasciato il metodo come "ProcessDto (PaginatedDto paginatedDto)" e, come previsto, non ha funzionato. –
tugberk