我需要根據給定的關系/條件將一個串列值轉換為另一個。
List1 值 = ["紅色","綠色","藍色"]
所需串列 = ["RD","GR","BLU"]
List1 和 List2 之間的關系圖
Red = Rd
Green = GR
Blue = BLU
我們可以做一個 foreach 回圈來實作這一點。但是有沒有更好的方法來做到這一點,例如這可以通過 Automapper 來完成嗎?我無法在支持此功能的自動映射器中找到任何解決方案。
uj5u.com熱心網友回復:
從您的問題陳述來看,I Prototype Design Pattern很適合這里。您可以使用此 DP 解決此問題,即使這樣,您將來也可以添加更多關系/條件。例如:[安全、危險、警告]、[失敗、成功、不完整]等組合,您可以在不觸及現有邏輯的情況下進行映射。您可以關注https://www.dofactory.com/net/prototype-design-pattern 來學習 Prototype DP。
uj5u.com熱心網友回復:
如果您需要能夠在兩個方向上執行轉換,您可以使用兩個列舉來實作這一點 - 每個表單一個 - 以相同的順序。例如:
public enum ColorLong
{
Red,
Green,
...
}
public enum ColorShort
{
RD,
GR,
...
}
要從一種形式映射到另一種形式,只需使用不區分大小寫的決議將字串輸入決議為正確的列舉型別,然后將該結果轉換為目標列舉型別。
當您將字串決議為源型別列舉時,您實際上會得到一個與列舉中元素位置相對應的整數值(默認情況下)。只要兩個列舉的值順序相同,就可以正常作業。不需要條件邏輯或 switch 陳述句!
例如,從長格式決議為短格式:
var longForm = Enum.Parse<ColorLong>(inputString, true);
var shortForm = (ColorShort) ((int)longForm);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/419688.html
標籤:
上一篇:我可以在不使用整個MassTransit框架的情況下使用MassTransit/Automatonymoussaga嗎?
