Files
test_demo/MX-PD-盘古 - new/PanGu.DieBonderApp/MainShell/Recipe/Models/RecipeBase.cs
Shi.Ji e31d3560bb 添加 MX-PD-盘古 项目文件
将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
2026-05-18 11:43:09 +08:00

75 lines
2.2 KiB
C#

using MainShell.Filewritable;
using MwFramework.ManagerService;
using MXJM.FileWritable;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace MainShell.Recipe.Models
{
public abstract class RecipeBase :JsonFileWritableBase,IRecipe , INotifyPropertyChanged
{
private string _recipeName;
public virtual string RecipeName
{
get => _recipeName;
set
{
if (_recipeName != value)
{
string oldName = _recipeName;
_recipeName = value;
OnRenamed?.Invoke(this, oldName, _recipeName);
OnPropertyChanged();
}
}
}
public event Action<IRecipe, string, string> OnRenamed;
#region
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// 通用的 SetProperty 辅助方法,派生类在属性 setter 中可使用以简化通知
/// 用法: SetProperty(ref _field, value);
/// </summary>
protected bool SetProperty<T>(ref T field, T value, [CallerMemberName] string propertyName = null)
{
if (EqualityComparer<T>.Default.Equals(field, value)) return false;
field = value;
OnPropertyChanged(propertyName);
return true;
}
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public string CreateSnapshot()
{
var settings = new JsonSerializerSettings
{
Formatting = Formatting.None,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
ContractResolver = IgnorePropertiesResolver
};
return JsonConvert.SerializeObject(this, settings);
}
#endregion
protected RecipeBase(string name)
{
_recipeName = name;
}
protected RecipeBase()
{
}
}
}