6
これは共分散およびコントラバナンスの問題ではあるがわかりませんが、私はこの問題を解決できません。ここでは、コードは次のとおりです。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<IDto>
ProcessDto
の方法としてPaginatedDto<PersonDto>
を渡すことはできません。どのようなアイデアを私はこの問題を解決することができますか?
ああ、私の愚かな頭を!私は実際にそれを試みましたが、メソッドを 'ProcessDto(PaginatedDto paginatedDto)'のように残し、期待通りに動作しませんでした。 –
tugberk