automapper框架优化

This commit is contained in:
hsc
2026-06-10 15:04:11 +08:00
parent 5452857299
commit 2e07c0c446
43 changed files with 612 additions and 293 deletions

View File

@@ -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 = "循环结束",