konvertiert werden Ich bin mir nicht sicher, ob dies ein Covariance und Kontravarianz-Problem ist, aber ich kann nicht funktionieren. Hier ist der Code:MyType <Foo> kann nicht implizit in 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...
}
}
Aus irgendeinem Grund habe ich nicht PaginatedDto<PersonDto>
als PaginatedDto<IDto>
-ProcessDto
Methode übergeben kann. Irgendeine Idee, wie kann ich dieses Problem lösen?
ah, meine dummen Kopf! Ich habe das tatsächlich versucht, aber die Methode als 'ProcessDto (PaginatedDto paginatedDto) 'verlassen und wie erwartet funktioniert das nicht. –
tugberk