繁体   English   中英

基本类中具体类的类型,C#中具有泛型

[英]Type of concrete class in base class with generic in c#

我正在创建一个在dto和从基类覆盖的实体之间执行映射的方法。 我在AuthorDto.cs和Dto.cs中具有以下类

public class AuthorDto : Dto<AuthorDto, Author>
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string LastName { get; set; }
    public string FullName { get; set; }

    public override void Map(IMap<AuthorDto, Author> mapper)
    {
        mapper.Map(t => t.FullName, t => t.Name + " " + t.LastName);
    }
}

public abstract class Dto<TDto, TEntity> where TDto : class where TEntity : class
{      
    public virtual void Map(IMap<TDto, TEntity> mapper) { }
}

我需要确保在重写基本Map方法时,IMap参数的第一个参数必须是Dto的实际具体类。

还有另一种方法可以执行此操作而无需显式地指示Dto中的第一个参数,从而像

public class AuthorDto : Dto<Author>

我想您是说您想将TDto类型限制为继承类?

public abstract class Dto<TDto, TEntity> where TDto : Dto<TDto, TEntity> where TEntity : class

这将确保TDto是从基本Dto类继承的类。

如果未显式定义TDto类型参数,则将无法继承,因为Map方法必须知道该参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM