2013-02-18 100 views
0

我有兩個類包含相同的字段,但是從別處繼承了一些屬性,而另一個則沒有。克隆一個類

我已經使用類「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; } 
} 

這可能嗎?

感謝

+0

您可以實現你們班icloneable接口。 – Tomtom 2013-02-18 12:41:49

+1

爲什麼不只是將數據網格設置爲僅顯示所需的字段? – juharr 2013-02-18 12:42:06

+0

「它添加了其他字段,當我在數據網格中顯示此列表時,我不想要這些字段。」這聽起來像是一個顯示問題:如果您可以隱藏數據網格中不需要的列,您的問題是否會得到解決?如果是這樣,我強烈建議尋找顯示問題的解決方案(他們往往更容易解決和理解)。 – dasblinkenlight 2013-02-18 12:43:29

回答

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)); 
+0

大聲笑兩個傢伙一樣的想法;) – 2013-02-18 12:43:35