AutoMapperで遊んでいるとき、以下のような実装が可能かどうか(正しく設定できていないのか)を知りたいと思っていました。C#Automapper Generic Mapping
基本サービス:
public class BaseService<T, IEntityDTO> : IService<T, IEntityDTO> where T : class, IEntity
{
private IUnitOfWork _unitOfWork;
private IRepository<IEntity> _repository;
private IMapper _mapper;
public BaseService(IUnitOfWork unitOfWork, IMapper mapper)
{
_unitOfWork = unitOfWork;
_repository = unitOfWork.Repository<IEntity>();
_mapper = mapper;
}
public IList<IEntityDTO> GetAll()
{
return _mapper.Map<IList<IEntityDTO>>(_repository.GetAll().ToList());
}
}
コンクリートのサービス:
public class HotelService : BaseService<Hotels, HotelsDTO>, IHotelService
{
private IUnitOfWork _unitOfWork;
private IRepository<Hotels> _hotelsRepository;
private IMapper _mapper;
public HotelService(IUnitOfWork unitOfWork, IMapper mapper) : base(unitOfWork, mapper)
{
_unitOfWork = unitOfWork;
_hotelsRepository = unitOfWork.Repository<Hotels>();
_mapper = mapper;
}
}
現在のマッピング:
public class AutoMapperProfileConfiguration : Profile
{
protected override void Configure()
{
CreateMap<Hotels, HotelsDTO>().ReverseMap();
}
}
私はマッピングが行われるべきかについて親切に無知です。誰かアドバイスをしていますか、これはちょうど行く方法ではありませんか?
あなたが尋ねていることは不明です。あなたは何に問題がありますか? –
コードを更新して明確にしました。私は、基本サービスに渡されるものに基づいて、具体的な型のマッピングを行うことができるジェネリックマッピングを実装しようとしています。 – user2963570
マッピングが自動的に行われるように、すべての具体的なサービスに汎用のものを書きたいと思います。それ以外の場合、私は具体的なサービスにgetallメソッドをドロップする必要があります。だから私は具体的な方法でマッピングを処理する必要があります。次に例を示します。_mapper.Map>(_ repository.GetAll()。ToList()); –
user2963570