.net 如何使用Mapster为泛型类型创建Map?

ykejflvf  于 2023-10-21  发布在  .NET
关注(0)|答案(2)|浏览(196)

我需要使用Mapster配置两个泛型类之间的自定义Map。

public class Source<T>
{
    public T Value { get; set; }
}

public class Destination<T>
{
    public T Value { get; set; }
}

我做了以下尝试,但语法不正确:

TypeAdapterConfig<Source<>, Destination<>>.NewConfig()
    .Map(dest => dest.Value, src => src.Value);

TypeAdapterConfig<Source<T>, Destination<T>>.NewConfig()
    .Map(dest => dest.Value, src => src.Value);

我寻找答案并阅读了Mapster文档,但找不到解决方案。这是Map库的限制吗?有没有什么方法可以做这种Map?

6jygbczu

6jygbczu1#

除非在适当的泛型上下文中,否则不能使泛型类型具有泛型类型参数。因此,您不能像这样为所有源/目标组合创建Map。
你可以通过一个辅助函数来使事情写得稍微好一点,比如

public void MapSourceToDestination<T>() {
  TypeAdapterConfig<Source<T>, Destination<T>>.NewConfig()
    .Map(dest => dest.Value, src => src.Value);
}

但是你仍然需要调用它来支持每个T。

f0brbegy

f0brbegy2#

现在你可以这样做

TypeAdapterConfig.GlobalSettings.ForType(typeof(GenericPoco<>), typeof(GenericDto<>))
    .Map("value", "Value");

相关问题