0

私は次のようなことができるようにしたい:

FluentMapper m = new FluentMapper();
//some test data
ProjectDTO dto = new ProjectDTO() {...A List of Properties...};
Project entity = new Project();
List<ProjectDTO> listOfDTOs = new List<ProjectDTO>(){dto};
List<Project> listOfEntities = new List<Project>(){entity};
//Mapping from DTO to entity
m.Map<ProjectDTO>(dto).To<Project>(entity);
m.Map<ProjectDTO>(listOfDTOs).To<Project>(listOfEntities);
//and vice versa
m.Map<Project>(entity).To<ProjectDTO>(dto);
m.Map<Project>(listOfEntities).To<ProjectDTO>(listOfDTOs);

つまり、基本的に同じ Method Map(item or a list of items).To(item or list of items) を使用して、エンティティまたはエンティティのリストを DTO または DTO のリストにマッピングできます。また、ProjectDTO と Project の間にマッピングが定義されていない場合は、例外がスローされます。リストを作成するのがもっと複​​雑な場合は、手動でループするだけで十分です。

Ninject を使用してFrom型とTo型に基づく正しい Mapper ベースを取得する方法がわかりません。私はファクトリを使用して 2 つのタイプに基づいてマッパー ベースを構築することを考えていましたが、それがどのように行われるかはわかりません。

現在、エンティティ/DTO ペアごとにマッパーを使用していますが、複数のマッパーを挿入する必要があるクラスで複数のマッパーを使用する必要がある場合、扱いにくくなります。私たちの Mapper クラスは次のようなものです (これは、動作するものに変更しても問題ありません)。

public class ProjectMapper<E, D> : IEntityDTOMapper<Project, ProjectDTO>
    where E : Project
    where D : ProjectDTO
{
    public ProjectDTO Map(Project entity)
    {
        return new ProjectDTO()
        {
            ... Mapping properties...
        };
    }

    public List<ProjectDTO> Map(List<Project> entities)
    {
        List<ProjectDTO> dtos = new List<ProjectDTO>();
        foreach (Project entity in entities)
        {
            dtos.Add(Map(entity));
        }
        return dtos;
    }

    public Project Map(ProjectDTO dto)
    {
        return new Project()
        {
            ... Mapping properties...
        };
    }

    public List<Project> Map(List<ProjectDTO> dtos)
    {
        List<Project> entities = new List<Project>();
        foreach (ProjectDTO dto in dtos)
        {
            entities.Add(Map(dto));
        }
        return entities;
    }

AutoMapper を使用することも考えましたが、やり過ぎのように思えます。高度な Ninject テクニックも学びたいと思っています。

ありがとうございました。

4

0 に答える 0