automapper框架优化
This commit is contained in:
@@ -18,7 +18,7 @@ using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
using System.Xml;
|
||||
using Model;
|
||||
using static UIShare.UIViewModel.ParameterModel;
|
||||
using static UIShare.UIViewModel.ParameterVM;
|
||||
using UIShare.ViewModelBase;
|
||||
using NLog;
|
||||
|
||||
@@ -34,14 +34,14 @@ namespace TestingModule.ViewModels
|
||||
get => _SearchText;
|
||||
set => SetProperty(ref _SearchText, value);
|
||||
}
|
||||
private ObservableCollection<InstructionNode> _instructionTree = new();
|
||||
public ObservableCollection<InstructionNode> InstructionTree
|
||||
private ObservableCollection<InstructionNodeVM> _instructionTree = new();
|
||||
public ObservableCollection<InstructionNodeVM> InstructionTree
|
||||
{
|
||||
get => _instructionTree;
|
||||
set => SetProperty(ref _instructionTree, value);
|
||||
}
|
||||
|
||||
public ProgramModel Program
|
||||
public ProgramVM Program
|
||||
{
|
||||
get => _ScopedContext.Program;
|
||||
set
|
||||
@@ -67,15 +67,15 @@ namespace TestingModule.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
private ObservableCollection<SubProgramItem> _subPrograms = new();
|
||||
public ObservableCollection<SubProgramItem> SubPrograms
|
||||
private ObservableCollection<SubProgramItemVM> _subPrograms = new();
|
||||
public ObservableCollection<SubProgramItemVM> SubPrograms
|
||||
{
|
||||
get => _subPrograms;
|
||||
set => SetProperty(ref _subPrograms, value);
|
||||
}
|
||||
|
||||
private Dictionary<object, InstructionNode> _treeNodeMap = new();
|
||||
public Dictionary<object, InstructionNode> TreeNodeMap
|
||||
private Dictionary<object, InstructionNodeVM> _treeNodeMap = new();
|
||||
public Dictionary<object, InstructionNodeVM> TreeNodeMap
|
||||
{
|
||||
get => _treeNodeMap;
|
||||
set => SetProperty(ref _treeNodeMap, value);
|
||||
@@ -119,7 +119,7 @@ namespace TestingModule.ViewModels
|
||||
private void TreeDoubleClick(object obj)
|
||||
{
|
||||
if (!_globalInfo.IsAdmin) return;
|
||||
if(obj is InstructionNode Node)
|
||||
if(obj is InstructionNodeVM Node)
|
||||
{
|
||||
if(Node.Children.Count == 0)
|
||||
{
|
||||
@@ -140,7 +140,7 @@ namespace TestingModule.ViewModels
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(Node.Tag is SubProgramItem subProgram)
|
||||
else if(Node.Tag is SubProgramItemVM subProgram)
|
||||
{
|
||||
AddSubProgramToProgram(subProgram, index);
|
||||
}
|
||||
@@ -211,7 +211,7 @@ namespace TestingModule.ViewModels
|
||||
{
|
||||
try
|
||||
{
|
||||
SubPrograms.Add(new SubProgramItem
|
||||
SubPrograms.Add(new SubProgramItemVM
|
||||
{
|
||||
Name = Path.GetFileNameWithoutExtension(filePath),
|
||||
FilePath = filePath
|
||||
@@ -229,7 +229,7 @@ namespace TestingModule.ViewModels
|
||||
private void LoadInstructionsToTreeView()
|
||||
{
|
||||
InstructionTree.Clear();
|
||||
var controlRootNode = new InstructionNode
|
||||
var controlRootNode = new InstructionNodeVM
|
||||
{
|
||||
Name = "系统指令",
|
||||
Tag = "ControlRoot"
|
||||
@@ -237,14 +237,14 @@ namespace TestingModule.ViewModels
|
||||
InstructionTree.Add(controlRootNode);
|
||||
|
||||
// 循环开始
|
||||
controlRootNode.Children.Add(new InstructionNode
|
||||
controlRootNode.Children.Add(new InstructionNodeVM
|
||||
{
|
||||
Name = "循环开始",
|
||||
Tag = "循环开始"
|
||||
});
|
||||
|
||||
// 循环结束
|
||||
controlRootNode.Children.Add(new InstructionNode
|
||||
controlRootNode.Children.Add(new InstructionNodeVM
|
||||
{
|
||||
Name = "循环结束",
|
||||
Tag = "循环结束"
|
||||
@@ -253,7 +253,7 @@ namespace TestingModule.ViewModels
|
||||
// ----------------------
|
||||
// 子程序 根节点
|
||||
// ----------------------
|
||||
var subProgramRoot = new InstructionNode
|
||||
var subProgramRoot = new InstructionNodeVM
|
||||
{
|
||||
Name = "子程序",
|
||||
Tag = "SubProgramRoot"
|
||||
@@ -262,7 +262,7 @@ namespace TestingModule.ViewModels
|
||||
|
||||
foreach (var subProgram in SubPrograms)
|
||||
{
|
||||
subProgramRoot.Children.Add(new InstructionNode
|
||||
subProgramRoot.Children.Add(new InstructionNodeVM
|
||||
{
|
||||
Name = subProgram.Name,
|
||||
Tag = subProgram,
|
||||
@@ -304,7 +304,7 @@ namespace TestingModule.ViewModels
|
||||
|
||||
if (validTypes.Count > 0)
|
||||
{
|
||||
var assemblyNode = new InstructionNode
|
||||
var assemblyNode = new InstructionNodeVM
|
||||
{
|
||||
Name = assembly.GetName().Name,
|
||||
Tag = assembly
|
||||
@@ -320,7 +320,7 @@ namespace TestingModule.ViewModels
|
||||
// continue;
|
||||
//}
|
||||
|
||||
var typeNode = new InstructionNode
|
||||
var typeNode = new InstructionNodeVM
|
||||
{
|
||||
Name = type.Name,
|
||||
Tag = type,
|
||||
@@ -346,7 +346,7 @@ namespace TestingModule.ViewModels
|
||||
var parameters = method.GetParameters();
|
||||
var paramText = string.Join(", ", parameters.Select(p => $"{p.ParameterType.Name} {p.Name}"));
|
||||
|
||||
var methodNode = new InstructionNode
|
||||
var methodNode = new InstructionNodeVM
|
||||
{
|
||||
Name = $"{method.Name}({paramText})",
|
||||
Tag = method,
|
||||
@@ -422,11 +422,11 @@ namespace TestingModule.ViewModels
|
||||
{
|
||||
try
|
||||
{
|
||||
var newStep = new StepModel
|
||||
var newStep = new StepVM
|
||||
{
|
||||
Name = method.Name,
|
||||
StepType = "方法",
|
||||
Method = new MethodModel
|
||||
Method = new MethodVM
|
||||
{
|
||||
FullName = method.DeclaringType?.FullName,
|
||||
Name = method.Name
|
||||
@@ -436,7 +436,7 @@ namespace TestingModule.ViewModels
|
||||
// 添加输入参数
|
||||
foreach (var param in method.GetParameters())
|
||||
{
|
||||
newStep.Method.Parameters.Add(new ParameterModel
|
||||
newStep.Method.Parameters.Add(new ParameterVM
|
||||
{
|
||||
Name = param.Name!,
|
||||
Type = param.ParameterType,
|
||||
@@ -455,7 +455,7 @@ namespace TestingModule.ViewModels
|
||||
{
|
||||
// 提取实际返回类型(如 Task<bool> -> bool)
|
||||
Type actualType = returnType.GetGenericArguments()[0];
|
||||
newStep.Method.Parameters.Add(new ParameterModel
|
||||
newStep.Method.Parameters.Add(new ParameterVM
|
||||
{
|
||||
Name = "Result",
|
||||
Type = actualType, // 使用实际类型
|
||||
@@ -465,7 +465,7 @@ namespace TestingModule.ViewModels
|
||||
else if (returnType != typeof(void))
|
||||
{
|
||||
// 同步方法正常添加
|
||||
newStep.Method.Parameters.Add(new ParameterModel
|
||||
newStep.Method.Parameters.Add(new ParameterVM
|
||||
{
|
||||
Name = "Result",
|
||||
Type = returnType,
|
||||
@@ -490,17 +490,17 @@ namespace TestingModule.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
private void AddSubProgramToProgram(SubProgramItem subProgram, int insertIndex = -1)
|
||||
private void AddSubProgramToProgram(SubProgramItemVM subProgram, int insertIndex = -1)
|
||||
{
|
||||
try
|
||||
{
|
||||
var newStep = new StepModel
|
||||
var newStep = new StepVM
|
||||
{
|
||||
Name = subProgram.Name,
|
||||
StepType = "子程序"
|
||||
};
|
||||
var jsonstr = File.ReadAllText($"{subProgram.FilePath}");
|
||||
var tmp = JsonConvert.DeserializeObject<ProgramModel>(jsonstr);
|
||||
var tmp = JsonConvert.DeserializeObject<ProgramVM>(jsonstr);
|
||||
if (tmp != null)
|
||||
{
|
||||
newStep.SubProgram = tmp;
|
||||
@@ -525,7 +525,7 @@ namespace TestingModule.ViewModels
|
||||
|
||||
private void AddLoopStartStep(int insertIndex = -1)
|
||||
{
|
||||
var newStep = new StepModel
|
||||
var newStep = new StepVM
|
||||
{
|
||||
Name = "循环开始",
|
||||
StepType = "循环开始",
|
||||
@@ -549,7 +549,7 @@ namespace TestingModule.ViewModels
|
||||
private void AddLoopEndStep(int insertIndex = -1)
|
||||
{
|
||||
// 查找最近的未匹配循环开始
|
||||
StepModel? lastUnmatchedLoopStart = null;
|
||||
StepVM? lastUnmatchedLoopStart = null;
|
||||
for (int i = Program.StepCollection.Count - 1; i >= 0; i--)
|
||||
{
|
||||
if (Program.StepCollection[i].StepType == "循环开始")
|
||||
@@ -564,7 +564,7 @@ namespace TestingModule.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
var newStep = new StepModel
|
||||
var newStep = new StepVM
|
||||
{
|
||||
Name = "循环结束",
|
||||
StepType = "循环结束",
|
||||
|
||||
@@ -8,7 +8,7 @@ using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using UIShare.GlobalVariable;
|
||||
using static UIShare.UIViewModel.ParameterModel;
|
||||
using static UIShare.UIViewModel.ParameterVM;
|
||||
using UIShare.ViewModelBase;
|
||||
using Prism.Ioc;
|
||||
using Prism.Navigation.Regions;
|
||||
@@ -58,14 +58,14 @@ namespace TestingModule.ViewModels.Dialogs
|
||||
set => SetProperty(ref _Mode, value);
|
||||
}
|
||||
|
||||
private ProgramModel _program;
|
||||
public ProgramModel Program
|
||||
private ProgramVM _program;
|
||||
public ProgramVM Program
|
||||
{
|
||||
get => _program;
|
||||
set => SetProperty(ref _program, value);
|
||||
}
|
||||
private ParameterModel _Parameter;
|
||||
public ParameterModel Parameter
|
||||
private ParameterVM _Parameter;
|
||||
public ParameterVM Parameter
|
||||
{
|
||||
get => _Parameter;
|
||||
set => SetProperty(ref _Parameter, value);
|
||||
@@ -127,7 +127,7 @@ namespace TestingModule.ViewModels.Dialogs
|
||||
}
|
||||
else
|
||||
{
|
||||
Parameter = new ParameterModel(_ScopedContext.SelectedParameter);
|
||||
Parameter = new ParameterVM(_ScopedContext.SelectedParameter);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -22,15 +22,15 @@ namespace TestingModule.ViewModels
|
||||
// get { return _DeviceList; }
|
||||
// set { SetProperty(ref _DeviceList,value); }
|
||||
//}
|
||||
private ObservableCollection<DeviceInfoModel> _DeviceInfoModel;
|
||||
private ObservableCollection<DeviceInfoVM> _DeviceInfoModel;
|
||||
|
||||
public ObservableCollection<DeviceInfoModel> DeviceInfoModel
|
||||
public ObservableCollection<DeviceInfoVM> DeviceInfoVM
|
||||
{
|
||||
get { return _DeviceInfoModel; }
|
||||
set { SetProperty(ref _DeviceInfoModel, value); }
|
||||
}
|
||||
|
||||
public ProgramModel Program
|
||||
public ProgramVM Program
|
||||
{
|
||||
get => _ScopedContext.Program;
|
||||
set
|
||||
@@ -42,8 +42,8 @@ namespace TestingModule.ViewModels
|
||||
}
|
||||
}
|
||||
}
|
||||
private ParameterModel _SelectedParameter;
|
||||
public ParameterModel SelectedParameter
|
||||
private ParameterVM _SelectedParameter;
|
||||
public ParameterVM SelectedParameter
|
||||
{
|
||||
get => _SelectedParameter;
|
||||
set
|
||||
@@ -54,11 +54,11 @@ namespace TestingModule.ViewModels
|
||||
}
|
||||
}
|
||||
}
|
||||
private DeviceInfoModel _SelectedDevice;
|
||||
private DeviceInfoVM _SelectedDevice;
|
||||
|
||||
|
||||
|
||||
public DeviceInfoModel SelectedDevice
|
||||
public DeviceInfoVM SelectedDevice
|
||||
{
|
||||
get { return _SelectedDevice; }
|
||||
set { SetProperty(ref _SelectedDevice, value); }
|
||||
|
||||
@@ -27,13 +27,13 @@ namespace TestingModule.ViewModels
|
||||
get => _ID;
|
||||
set => SetProperty(ref _ID, value);
|
||||
}
|
||||
private StepModel _SelectedStep;
|
||||
public StepModel SelectedStep
|
||||
private StepVM _SelectedStep;
|
||||
public StepVM SelectedStep
|
||||
{
|
||||
get => _SelectedStep;
|
||||
set => SetProperty(ref _SelectedStep, value);
|
||||
}
|
||||
public ProgramModel Program
|
||||
public ProgramVM Program
|
||||
{
|
||||
get => _ScopedContext.Program;
|
||||
set
|
||||
@@ -193,7 +193,7 @@ namespace TestingModule.ViewModels
|
||||
{
|
||||
if (_ScopedContext.SelectedStep == null) return;
|
||||
ID = _ScopedContext.SelectedStep.ID;
|
||||
SelectedStep = new StepModel(_ScopedContext.SelectedStep);
|
||||
SelectedStep = new StepVM(_ScopedContext.SelectedStep);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -44,14 +44,14 @@ namespace TestingModule.ViewModels
|
||||
get { return _selectedTabHeader; }
|
||||
set { SetProperty(ref _selectedTabHeader, value); }
|
||||
}
|
||||
private List<StepModel> _SelectedItems;
|
||||
public List<StepModel> SelectedItems
|
||||
private List<StepVM> _SelectedItems;
|
||||
public List<StepVM> SelectedItems
|
||||
{
|
||||
get { return _SelectedItems; }
|
||||
set { SetProperty(ref _SelectedItems, value); }
|
||||
}
|
||||
private StepModel _SelectedStep;
|
||||
public StepModel SelectedStep
|
||||
private StepVM _SelectedStep;
|
||||
public StepVM SelectedStep
|
||||
{
|
||||
get => _SelectedStep;
|
||||
set
|
||||
@@ -62,7 +62,7 @@ namespace TestingModule.ViewModels
|
||||
}
|
||||
}
|
||||
}
|
||||
public ProgramModel Program
|
||||
public ProgramVM Program
|
||||
{
|
||||
get => _ScopedContext.Program;
|
||||
set
|
||||
@@ -77,7 +77,7 @@ namespace TestingModule.ViewModels
|
||||
ScopedContext _ScopedContext { get; set; }
|
||||
private readonly SystemConfig _systemConfig;
|
||||
private readonly GlobalInfo _globalInfo;
|
||||
private List<StepModel> tmpCopyList = new List<StepModel>();
|
||||
private List<StepVM> tmpCopyList = new List<StepVM>();
|
||||
|
||||
|
||||
#endregion
|
||||
@@ -115,7 +115,7 @@ namespace TestingModule.ViewModels
|
||||
var selectedList = parameter as IList;
|
||||
if (selectedList != null)
|
||||
{
|
||||
SelectedItems = selectedList.Cast<StepModel>().ToList();
|
||||
SelectedItems = selectedList.Cast<StepVM>().ToList();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ namespace TestingModule.ViewModels
|
||||
foreach (var item in tmpCopyList)
|
||||
{
|
||||
// 创建新副本,避免引用同一个对象,并赋予新 ID
|
||||
var newStep = new StepModel(item) { ID = Guid.NewGuid() };
|
||||
var newStep = new StepVM(item) { ID = Guid.NewGuid() };
|
||||
Program.StepCollection.Insert(insertIndex, newStep);
|
||||
insertIndex++; // 递增索引,保证粘贴的多项顺序一致
|
||||
}
|
||||
@@ -168,7 +168,7 @@ namespace TestingModule.ViewModels
|
||||
|
||||
foreach (var item in tmpCopyList)
|
||||
{
|
||||
var newStep = new StepModel(item) { ID = Guid.NewGuid() };
|
||||
var newStep = new StepVM(item) { ID = Guid.NewGuid() };
|
||||
Program.ErrorStepCollection.Insert(insertIndex, newStep);
|
||||
insertIndex++;
|
||||
}
|
||||
@@ -208,7 +208,7 @@ namespace TestingModule.ViewModels
|
||||
#region 辅助方法
|
||||
private void StepCollection_CollectionChanged(object? sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
|
||||
{
|
||||
var collection = sender as ObservableCollection<StepModel>;
|
||||
var collection = sender as ObservableCollection<StepVM>;
|
||||
// Add/Move/Remove 都会触发,这里判断具体情形
|
||||
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add ||
|
||||
e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Move||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
<TreeView Grid.Row="1"
|
||||
ItemsSource="{Binding InstructionTree}">
|
||||
<TreeView.Resources>
|
||||
<HierarchicalDataTemplate DataType="{x:Type model:InstructionNode}"
|
||||
<HierarchicalDataTemplate DataType="{x:Type model:InstructionNodeVM}"
|
||||
ItemsSource="{Binding Children}">
|
||||
<TextBlock Text="{Binding Name}" />
|
||||
</HierarchicalDataTemplate>
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
<TabItem Header="设备">
|
||||
<DataGrid Padding="10"
|
||||
Background="Transparent"
|
||||
ItemsSource="{Binding DeviceInfoModel}"
|
||||
ItemsSource="{Binding DeviceInfoVM}"
|
||||
AutoGenerateColumns="False"
|
||||
CanUserAddRows="False"
|
||||
IsReadOnly="True"
|
||||
|
||||
Reference in New Issue
Block a user