Cannot implicitly convert MyType to MyType

前端 未结 1 1131
醉酒成梦
醉酒成梦 2021-01-18 08:29

I am not sure if this is a Covariance and Contravariance issue but I cannot get this working. Here is the code:

public interface IDto { }

public class Pagin         


        
相关标签:
1条回答
  • 2021-01-18 09:27

    Yes this is a variance issue. You need to create an interface (only interfaces and delegates can be co/contravariant) IPaginatedDto<out TDto> where the Dtos cannot have a setter (otherwise you cannot use out):

    public interface IPaginatedDto<out TDto> where TDto : IDto
    {
        int PageIndex { get; set; }
        int PageSize { get; set; }
        int TotalCount { get; set; }
        int TotalPageCount { get; set; }
        bool HasNextPage { get; set; }
        bool HasPreviousPage { get; set; }
        IEnumerable<TDto> Dtos { get; }
    }
    

    And your PaginatedDto<TDto> will implement this interface:

    public class PaginatedDto<TDto> : IPaginatedDto<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; }
    }
    

    And use the interface in your method:

    private static void ProcessDto(IPaginatedDto<IDto> paginatedDto)
    {
    
        //Do work...
    }
    
    0 讨论(0)
提交回复
热议问题