在c#中映射两个类

本文关键字:两个 映射 | 更新日期: 2023-09-27 18:11:47

我有两个类

public class foo1
{
  public int id;
  public string image_link;
  public string sale_price;
}

public class foo2
{
 public int Id;
 public string ImageLink;
 public string SalePrice
}

属性值只有下划线和大小写不同。我需要映射这两个类。

现在我正在尝试这样的东西,它的工作:

//var b = object of foo2
var a = new foo1{
 a.id = b.Id,
 a.image_link = b.ImageLink,
 a.sale_price = b.SalePrice
}

我听说过AutoMapper,但我不清楚我将如何使用它,或者忽略大小写或下划线的选项在哪里。或者有更好的解决方案吗?

在c#中映射两个类

您的代码很好,并按预期工作。

我个人建议你不要使用automapper。网上有很多关于为什么的解释,例如:http://www.uglybugger.org/software/post/friends_dont_let_friends_use_automapper

基本上主要的问题是,如果你重命名你的foo1对象的一些属性而不修改你的foo2对象,你的代码将在运行时无声地失败。

作为@ken2k的回答,我建议你不要使用对象映射器。

如果你想保存代码,你可以为映射创建一个新方法(或者直接在构造函数中)。

public class foo1
{
  public int id;
  public string image_link;
  public string sale_price;
  public void map(foo2 obj)
  {
    this.id = obj.Id;
    this.image_link = obj.ImageLink;
    this.sale_price = obj.SalePrice;
  }
}
然后

//var b = object of foo2
var a = new foo1();
a.map(b);