在 C# 中映射两个 类

Mapping two classes in c#

我有两个类

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,但我不清楚我将如何使用它,或者忽略其中的大小写或下划线的选项在哪里。或者有更好的解决办法吗?

您的代码没有问题并且按预期工作。

我个人建议您不要使用自动映射器。网上关于为什么的解释很多,举个例子: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);