使用自动映射器映射静态类



有没有办法用自动映射器映射静态类?

场景是这样的。有一个名为 UserIdentity 的静态类,它包含属性。我想将UserIdentity类值映射到名为 UserDTO 的 none 静态类。

当我尝试时

AutoMapper.Mapper.CreateMap<UserIdentity, UserDTO>();

有一个错误说,

static type cannot be used as type arguments

现在任何人都可以向我解释这种情况以及是否可以实现。有没有办法在不使用自动映射器的情况下映射静态类。否则我必须手动完成它们。

执行此操作的唯一方法是使用虚拟类来执行无操作映射。 然后,您可以使用自定义类型转换器或映射函数,或者简单地执行以下操作:

Mapper.CreateMap<Dummy, Dest>()
  .AfterMap((src, dest) => 
     { 
         dest.Name = UserIdentity.Name;
         dest.Id = UserIdentity.Id;
         //.... etc..
     });
不幸的是,

你不能在静态类上使用自动映射器

此外,在一组

非常有限的情况下,您可以引用静态类类型,这也会使其他方法变得困难

静态类可以防止不当使用,因此在几乎所有情况下,您都不能在通常需要该类型的实例的情况下使用它们......这包括类型参数。

我能看到实现您想要的结果的唯一方法是自己创建一个逐字段映射函数

尽管您可以强制自动映射器使用虚拟类,但无论如何您仍在逐字段映射,我的投票是降低复杂性并仅使用如下所示的内容

  public static SomeDTO CreateDTO()
  {
     return new SomeDTO
        {
            dest.Name = UserIdentity.Name;
            dest.Id = UserIdentity.Id;
            ect..
        }
  }

最新更新