微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MapsterMapper 从接口映射到内部 setter 属性

如何解决MapsterMapper 从接口映射到内部 setter 属性

我不知道我的设计是否正确,这可以解释我的 MapsterMapper 问题。我将用一个例子来说明我的问题:

我有一个看起来像的模型:

public class TestModel {
  public BModel B { get; set; }
}

public class BModel {
  public int Count { get; set; }
}

我想将它们映射到这些类型:

public class Test : ITest {
  public IB B { get; internal set; }
}

public interface ITest {
  IB B { get; }
}
public class B : IB {
  public int Count { get; internal set; }
}

public interface IB {
  int Count { get; }
}

我正在尝试将 TestModel 映射到 Test。但是,当前 MapsterMapper 无法知道将 BModel 映射到 IB 时要使用的类型实现。所以它会自动生成一个类型,这可能很好,但我希望它使用我的 IB,B 实现。

所以我尝试这样做:

TypeAdapterConfig<BModel,IB>
    .NewConfig()
    .ConstructUsing(x => new B());

哪个有效,现在它使用我的 B 实例,但它无法将 CountBModel 映射到 CountB,可能是因为它没有看到来自 B 的 setter,因为它没有在 IB 中定义,而且我找不到任何解决方法......

我尝试将 init setter 添加到我的接口,然后将 init setter 添加到我的实现,这解决了问题,但我不想向我的接口添加显式 setter。

如果我的设计完全错误并且问题与 MapsterMapper 无关,请告诉我以便我修复它。

提前致谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。