克隆一类

时间:2013-02-18 12:40:01

标签: c#

我有两个包含相同字段的类,但是一个从其他地方继承了一些属性而另一个没有。

我使用类“ZEUS_ResearchStocksHistory”创建了一个通用列表,但是我需要将所有字段克隆到另一个列表“ZEUS_ResearchStocksHistoryWithExcel”。我不想循环遍历一个列表中的每个字段并填充另一个,或者编写某种linq连接,必须有更快的方法吗?

我不能在两个实例中使用相同类的原因是,在继承ExcelReport函数时,它会添加我在数据网格中显示此列表时不需要的其他字段。

internal class ZEUS_ResearchStocksHistory
{
 public String Amendment { get; set; }
 public String AmendedBy { get; set; }
 public String Sedol { get; set; }
 public String Date { get; set; }
}

internal class ZEUS_ResearchStocksHistoryWithExcel : ExcelReport
{
 public String Amendment { get; set; }
 public String AmendedBy { get; set; }
 public String Sedol { get; set; }
 public String Date { get; set; }
}

这可能吗?

由于

2 个答案:

答案 0 :(得分:1)

你看过automapper吗?

example from codeproject

CustomerViewItem customerViewItem = 
   Mapper.Map<Customer, CustomerViewItem>(customer);

答案 1 :(得分:0)

查看Automapper,其目的就是为了做到这一点。 Automapper在NuGet上运行。

http://lostechies.com/jimmybogard/2009/01/23/automapper-the-object-object-mapper/

你可以做一些简单的事情:

Mapper.CreateMap<ZEUS_ResearchStocksHistory, ZEUS_ResearchStocksHistoryWithExcel>();
var newObject = Mapper.Map<ZEUS_ResearchStocksHistory, ZEUS_ResearchStocksHistoryWithExcel>(oldObject);

或者,既然你说你有一个清单,你可以这样做:

var newList = oldList.Select(x => Mapper.Map<ZEUS_ResearchStocksHistory, ZEUS_ResearchStocksHistoryWithExcel>(x));