C# 物件 深層複製
C# 物件 深層複製
資料來源: https://blog.csdn.net/weixin_43145361/article/details/99729743
教學資料:
實際應用:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VPOS
{
public class ShopSubList//購物車 配料資料結構
{
public int m_intImgId;//圖示
public int m_intSID;//DB唯一值
public String m_StrName;//名稱
public double m_dblPrice;//價格
public int m_intAmount;//數量
public double m_dblSum;//總和
public String m_Strcondiment_code;
public int m_intitem_no;
public int m_intparent_item_no;
public String m_Strdel_flag;
public String m_Strdel_time;
public String m_Stritem_type;//類型
public int m_intdiscount_type;// 折扣/折讓 旗標
public String m_Strdiscount_name;// 折扣/折讓 說明文字
public String m_Strdiscount_code;
public int m_intdiscount_rate;// 折扣率
public int m_intdiscount_fee;// 折讓金額
public String m_Strdiscount_info; //JSON
public int m_inttax_sid; //稅率編號 ; 產品若沒有稅率資料[m_tax_sid=0],就直接從company和tax_data取出預設值
public int m_inttax_rate; //稅率
public String m_Strtax_type;//稅率類型
public int m_inttax_fee; //稅率金額
public String m_Strsubtotal_flag;//小計旗標
public int m_intsubtotal_item_no;//執行小計的編號
public ShopSubList()
{
m_intImgId = -1;
m_intSID = -1;
m_StrName = "";
m_dblPrice = 0.0;
m_intAmount = 0;
m_dblSum = 0.0;
m_Strcondiment_code = "";
m_intitem_no = -1;
m_intparent_item_no = -1;
m_Strdel_flag = "";
m_Strdel_time = "";
m_Stritem_type = "";//類型
m_intdiscount_type = -1;// 折扣/折讓 旗標
m_Strdiscount_name = "";// 折扣/折讓 說明文字
m_Strdiscount_code = "";
m_intdiscount_rate = 0;// 折扣率
m_intdiscount_fee = 0;// 折讓金額
m_Strdiscount_info = ""; //JSON
m_inttax_sid = -1; //稅率編號
m_inttax_rate = 0; //稅率
m_Strtax_type = "";//稅率類型
m_inttax_fee = 0; //稅率金額
m_Strsubtotal_flag = "N";//小計旗標
m_intsubtotal_item_no = 0;//執行小計的編號
}
}
public class ShopMainList//購物車 產品資料結構
{
public int m_intImgId;//圖示
public int m_intSID;//DB唯一值
public String m_StrName;//名稱
public double m_dblPrice;//價格
public int m_intAmount;//數量
public double m_dblSum;//總和
public String m_Stritem_type;//類型
public String m_Strproduct_code;
public int m_intitem_no;
public int m_intparent_item_no;//產品的父ID [歸屬在套餐之中]
public String m_Strother_info;//套餐的產品紀錄元素資訊
public String m_Strdel_flag;
public String m_Strdel_time;
public String m_Strdiscount_type;// 折扣/折讓 旗標
public String m_Strdiscount_name;// 折扣/折讓 說明文字
public String m_Strdiscount_code;
public int m_intdiscount_rate;// 折扣率
public int m_intdiscount_fee;// 折讓金額
public String m_Strdiscount_info; //JSON
public int m_inttax_sid; //稅率編號 ; 產品若沒有稅率資料[m_tax_sid=0],就直接從company和tax_data取出預設值
public int m_inttax_rate; //稅率
public String m_Strtax_type;//稅率類型
public int m_inttax_fee; //稅率金額
public String m_Strsubtotal_flag;//小計旗標
public int m_intsubtotal_item_no;//執行小計的編號
public List<ShopSubList> m_ShopSubList;
public ShopMainList()
{
m_intImgId = -1;
m_intSID = -1;
m_StrName = "";
m_dblPrice = 0.0;
m_intAmount = 0;
m_dblSum = 0.0;
m_Strproduct_code = "";
m_intitem_no = -1;
m_intparent_item_no = 0;
m_Strother_info = "";
m_Strdel_flag = "";
m_Strdel_time = "";
m_Stritem_type = "";//類型
m_Strdiscount_type = "N";// 折扣/折讓 旗標
m_Strdiscount_name = "";// 折扣/折讓 說明文字
m_Strdiscount_code = "";
m_intdiscount_rate = 0;// 折扣率
m_intdiscount_fee = 0;// 折讓金額
m_Strdiscount_info = ""; //JSON
m_inttax_sid = -1; //稅率編號
m_inttax_rate = 0; //稅率
m_Strtax_type = "";//稅率類型
m_inttax_fee = 0; //稅率金額
m_Strsubtotal_flag = "N";//小計旗標
m_intsubtotal_item_no = 0;//執行小計的編號
m_ShopSubList = new List<ShopSubList>();
}
public ShopMainList DeepClone()//深層複製
{
ShopMainList ShopMainListBuf = (ShopMainList)this.MemberwiseClone();//表層屬性複製
ShopMainListBuf.m_ShopSubList=new List<ShopSubList>();
ShopMainListBuf.m_ShopSubList.AddRange(this.m_ShopSubList);
return ShopMainListBuf;
}
}
public class ShopCart
{
public String m_StrOrderNumber;//訂單編號
public int m_intOrderType;//訂單類型
public String m_StrOrderTypeName;
public String m_StrOrderTypeCode;
public String m_promotion_value;//促銷處理資訊
public double m_promotion_fee;//促銷折扣金額
public String m_coupon_value;//優惠券資訊
public double m_coupon_discount;//優惠券金額
public String m_paid_type;//A: 取貨付款 B: Line Pay 付款
public String m_memo;//備註
public List<ShopMainList> m_ShopMainList;
public int m_intItemNoCount = 0;//產生對應MainList/SubLst內的m_intitem_no的欄位值
public ShopCart(int OrderType)
{
//m_StrOrderNumber = String.Format("{0}-{1}", DateTime.Now.ToString("yyyyMMdd"), "001");
m_intItemNoCount++;
m_intOrderType = OrderType;
m_ShopMainList = new List<ShopMainList>();
m_promotion_value = "";//促銷處理資訊
m_promotion_fee = 0.0;//促銷折扣金額
m_coupon_value = "";//優惠券資訊
m_coupon_discount = 0.0;//優惠券金額
m_paid_type = "A";//A: 取貨付款 B: Line Pay 付款
m_memo = "";//備註
}
}
}