104 lines
2.7 KiB
C#
104 lines
2.7 KiB
C#
using MainShell.Models;
|
||
using MwFramework.ManagerService;
|
||
using Stylet;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace MainShell.Recipe.Models
|
||
{
|
||
public class SubstrateInfo : PropertyChangedBase, IParameterItem
|
||
{
|
||
private MxSize _substrateSize = new MxSize();
|
||
|
||
public MxSize SubstrateSize
|
||
{
|
||
get { return _substrateSize; }
|
||
set { SetAndNotify(ref _substrateSize, value); }
|
||
}
|
||
|
||
private MxSize _padSize;
|
||
|
||
public MxSize PadSize
|
||
{
|
||
get { return _padSize; }
|
||
set { SetAndNotify(ref _padSize, value); }
|
||
}
|
||
|
||
|
||
private double _thickness;
|
||
|
||
public double ThickNess
|
||
{
|
||
get { return _thickness; }
|
||
set { SetAndNotify(ref _thickness, value); }
|
||
}
|
||
private double _pitchX;
|
||
|
||
public double PitchX
|
||
{
|
||
get { return _pitchX; }
|
||
set { SetAndNotify(ref _pitchX, value); }
|
||
}
|
||
private double _pitchY;
|
||
|
||
public double PitchY
|
||
{
|
||
get { return _pitchY; }
|
||
set { SetAndNotify(ref _pitchY, value); }
|
||
}
|
||
private int _rowNumber;
|
||
|
||
public int RowNumber
|
||
{
|
||
get { return _rowNumber; }
|
||
set { SetAndNotify(ref _rowNumber, value); }
|
||
}
|
||
private int _colNumber;
|
||
|
||
public int ColNumber
|
||
{
|
||
get { return _colNumber; }
|
||
set { SetAndNotify(ref _colNumber, value); }
|
||
}
|
||
|
||
private double _recheckPitch;
|
||
|
||
public double RecheckPitch
|
||
{
|
||
get { return _recheckPitch; }
|
||
set { SetAndNotify(ref _recheckPitch, value); }
|
||
}
|
||
|
||
public IParameterItem Clone()
|
||
{
|
||
// 1. 首先执行浅拷贝,复制所有值类型字段(如 Thickness, PitchX 等)
|
||
var clone = this.MemberwiseClone() as SubstrateInfo;
|
||
|
||
// 2. 手动深拷贝引用类型对象 (MxSize)
|
||
// 如果不这样做,clone 和原对象将指向内存中的同一个 MxSize 实例
|
||
if (this.SubstrateSize != null)
|
||
{
|
||
clone.SubstrateSize = new MxSize
|
||
{
|
||
Width = this.SubstrateSize.Width,
|
||
Height = this.SubstrateSize.Height
|
||
};
|
||
}
|
||
|
||
if (this.PadSize != null)
|
||
{
|
||
clone.PadSize = new MxSize
|
||
{
|
||
Width = this.PadSize.Width,
|
||
Height = this.PadSize.Height
|
||
};
|
||
}
|
||
|
||
return clone;
|
||
}
|
||
}
|
||
}
|