调整继承结构与基类重命名

This commit is contained in:
zengwenjie
2025-09-16 09:22:34 +08:00
parent cba82ca4c4
commit 7db5f8a9d9
18 changed files with 97 additions and 58 deletions

View File

@@ -92,13 +92,13 @@ namespace Deedy.Activity
/// <summary>
/// 动作节点
/// </summary>
public IDeedyAction DeedyAction
public IActionElement DeedyAction
{
get { return (IDeedyAction)GetValue(DeedyActionProperty); }
get { return (IActionElement)GetValue(DeedyActionProperty); }
set { SetValue(DeedyActionProperty, value); }
}
public static readonly DependencyProperty DeedyActionProperty =
DependencyProperty.Register("DeedyAction", typeof(IDeedyAction), typeof(ActionViewer), new PropertyMetadata(null,
DependencyProperty.Register("DeedyAction", typeof(IActionElement), typeof(ActionViewer), new PropertyMetadata(null,
(d, e) => (d as ActionViewer)?.DeedyAction_PropertyChangedCallback(e)));
/// <summary>
/// 处理「DeedyActionViewer.DeedyAction」属性变更
@@ -107,7 +107,7 @@ namespace Deedy.Activity
{
//
}
public void ReadyToWorking(Runtime? runtime)
public void ReadyToWorking(IElementActivity? element = null, Output? output = null)
{
throw new NotImplementedException();
}

View File

@@ -8,18 +8,18 @@ using System.Threading.Tasks;
namespace Deedy.Activity
{
public abstract class DeedyAction : IDeedyAction
public abstract class BasalAction : IActionElement
{
protected internal DeedyAction() { }
protected internal BasalAction() { }
public string DEClass { get; protected internal set; } = "";
public string DETitle { get; set; } = "";
public string DERemark { get; set; } = "";
public string DEIdentify { get; set; } = "";
public int DepthLevel { get; protected internal set; } = 0;
public IDeedyElement? ParentElement { get; protected internal set; }
public IElementActivity? ParentElement { get; protected internal set; }
public IActionViewer? ActionViewer { get; protected internal set; }
public IDeedyElement RootElement => (this.ParentElement == null) ? this : this.ParentElement.RootElement;
public IElementActivity RootElement => (this.ParentElement == null) ? this : this.ParentElement.RootElement;
public event PropertyChangedEventHandler? PropertyChanged;
@@ -55,22 +55,22 @@ namespace Deedy.Activity
return true;
}
public void InsertToFore(IDeedyElement deedyElement)
public void InsertToFore(IElementActivity deedyElement)
{
throw new NotImplementedException();
}
public void InsertAtRear(IDeedyElement deedyElement)
public void InsertAtRear(IElementActivity deedyElement)
{
throw new NotImplementedException();
}
public void SwapIndex(IDeedyElement deedyElement)
public void SwapIndex(IElementActivity deedyElement)
{
throw new NotImplementedException();
}
public void ReadyToWorking(IDeedyElement? parent = null)
public void ReadyToWorking(IElementActivity? element = null, Output? output = null)
{
throw new NotImplementedException();
}

View File

@@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace Deedy.Activity
{
public class DeedyElementCollection : ObservableCollection<IDeedyElement>
public class DeedyElementCollection : ObservableCollection<IElementActivity>
{
public DeedyElementCollection() : this(false) { }
public DeedyElementCollection(bool needDistinct = false)
@@ -16,15 +16,15 @@ namespace Deedy.Activity
this._needDistinct = needDistinct;
}
private bool _needDistinct = false;
public void AddRange(params IDeedyElement[] elements)
public void AddRange(params IElementActivity[] elements)
{
foreach (var element in elements) this.Add(element);
}
public void AddRange([AllowNull] IEnumerable<IDeedyElement> elements)
public void AddRange([AllowNull] IEnumerable<IElementActivity> elements)
{
if (elements != null) foreach (var element in elements) this.Add(element);
}
public new void Add([AllowNull] IDeedyElement element)
public new void Add([AllowNull] IElementActivity element)
{
if (element == null) return;
if (this._needDistinct)

View File

@@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace Deedy.Activity
{
public interface ICombinedElement : IDeedyElement
public interface ICombinedElement : IElementActivity
{
public DeedyElementCollection Elements { get; set; }
}

View File

@@ -8,7 +8,7 @@ namespace Deedy.Activity
{
public interface IContainerElement : ICombinedElement
{
public void Append(IDeedyElement deedyElement);
public void Remove(IDeedyElement deedyElement);
public void Append(IElementActivity deedyElement);
public void Remove(IElementActivity deedyElement);
}
}

View File

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Deedy.Activity
{
public abstract class ExecAction : DeedyAction
public abstract class ExecAction : BasalAction
{
protected internal ExecAction() { }
}

View File

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Deedy.Activity
{
public abstract class FlowAction : DeedyAction
public abstract class FlowAction : BasalAction
{
protected internal FlowAction() { }
}

View File

@@ -6,8 +6,10 @@ using System.Threading.Tasks;
namespace Deedy.Activity
{
public abstract class CombinedNode : FlowAction
public abstract class CombinedNode : FlowAction, ICombinedElement
{
public CombinedNode() { }
public DeedyElementCollection Elements { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
}
}

View File

@@ -6,8 +6,20 @@ using System.Threading.Tasks;
namespace Deedy.Activity
{
public abstract class ContainerBlock : FlowAction
public abstract class ContainerBlock : FlowAction, IContainerElement
{
public ContainerBlock() { }
public DeedyElementCollection Elements { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
public void Append(IElementActivity deedyElement)
{
throw new NotImplementedException();
}
public void Remove(IElementActivity deedyElement)
{
throw new NotImplementedException();
}
}
}

View File

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Deedy.Activity
{
public abstract class FuncAction : DeedyAction
public abstract class FuncAction : BasalAction
{
protected internal FuncAction() { }
}

View File

@@ -6,8 +6,10 @@ using System.Threading.Tasks;
namespace Deedy.Activity
{
public abstract class CombinedFunction : FuncAction
public abstract class CombinedFunction : FuncAction, ICombinedElement
{
public CombinedFunction() { }
public DeedyElementCollection Elements { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
}
}

View File

@@ -6,8 +6,20 @@ using System.Threading.Tasks;
namespace Deedy.Activity
{
public abstract class ContainerFunction : FuncAction
public abstract class ContainerFunction : FuncAction, IContainerElement
{
public ContainerFunction() { }
public DeedyElementCollection Elements { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
public void Append(IElementActivity deedyElement)
{
throw new NotImplementedException();
}
public void Remove(IElementActivity deedyElement)
{
throw new NotImplementedException();
}
}
}

View File

@@ -15,9 +15,9 @@ namespace Deedy.Activity
public string DERemark { get; set; } = "";
public string DEIdentify { get; set; } = "";
public int DepthLevel { get; protected internal set; } = 0;
public IDeedyElement? ParentElement { get; protected internal set; }
public IElementActivity? ParentElement { get; protected internal set; }
public IDeedyElement RootElement => (this.ParentElement == null) ? this : this.ParentElement.RootElement;
public IElementActivity RootElement => (this.ParentElement == null) ? this : this.ParentElement.RootElement;
public DeedyElementCollection Elements { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
@@ -57,37 +57,37 @@ namespace Deedy.Activity
return true;
}
public void Append(IDeedyElement deedyElement)
public void Append(IElementActivity deedyElement)
{
throw new NotImplementedException();
}
public void Remove(IDeedyElement deedyElement)
public void Remove(IElementActivity deedyElement)
{
throw new NotImplementedException();
}
public void InsertToFore(IDeedyElement deedyElement)
public void InsertToFore(IElementActivity deedyElement)
{
throw new NotImplementedException();
}
public void InsertAtRear(IDeedyElement deedyElement)
public void InsertAtRear(IElementActivity deedyElement)
{
throw new NotImplementedException();
}
public void SwapIndex(IDeedyElement element1, IDeedyElement element2)
public void SwapIndex(IElementActivity element1, IElementActivity element2)
{
throw new NotImplementedException();
}
public void SwapIndex(IDeedyElement deedyElement)
public void SwapIndex(IElementActivity deedyElement)
{
throw new NotImplementedException();
}
public void ReadyToWorking(IDeedyElement? parent = null)
public void ReadyToWorking(IElementActivity? element = null, Output? output = null)
{
throw new NotImplementedException();
}

View File

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Deedy.Activity
{
public interface IDeedyAction : IDeedyElement
public interface IActionElement : IElementActivity
{
public IActionViewer? ActionViewer { get; }
}

View File

@@ -9,11 +9,9 @@ using System.Windows;
namespace Deedy.Activity
{
public interface IActionViewer : INotifyPropertyChanged
public interface IActionViewer : IDeedyActivity, INotifyPropertyChanged
{
[AllowNull]
public IDeedyAction DeedyAction { get; set; }
public void ReadyToWorking(Runtime? runtime);
public IActionElement DeedyAction { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Deedy.Activity
{
public interface IDeedyActivity
{
public void ReadyToWorking(IElementActivity? element = null, Output? output = null);
}
}

View File

@@ -10,23 +10,23 @@ using System.Windows.Markup;
namespace Deedy.Activity
{
public interface IDeedyElement : INotifyPropertyChanged
public interface IElementActivity : IDeedyActivity, INotifyPropertyChanged
{
public string DEClass { get; }
public string DETitle { get; set; }
public string DERemark { get; set; }
public string DEIdentify { get; set; }
public int DepthLevel { get; }
public IDeedyElement? ParentElement { get; }
public IDeedyElement RootElement { get; }
public void InsertToFore(IDeedyElement deedyElement);
public void InsertAtRear(IDeedyElement deedyElement);
public void SwapIndex(IDeedyElement deedyElement);
public IElementActivity? ParentElement { get; }
public IElementActivity RootElement { get; }
public void InsertToFore(IElementActivity deedyElement);
public void InsertAtRear(IElementActivity deedyElement);
public void SwapIndex(IElementActivity deedyElement);
/// <summary>
/// 将当前节点链接到一个节点上
/// </summary>
/// <param name="element">要链接到的节点</param>
public virtual void LinkTo([AllowNull] IDeedyElement element)
public virtual void LinkTo([AllowNull] IElementActivity element)
{
if (element == null)
{
@@ -58,26 +58,26 @@ namespace Deedy.Activity
public virtual void Unlink()
{
(this.ParentElement as IContainerElement)?.Remove(this);
this.SetNamedPropertyValue<IDeedyElement?>(nameof(ParentElement), null);
this.SetNamedPropertyValue<IElementActivity?>(nameof(ParentElement), null);
this.SetNamedPropertyValue(nameof(DepthLevel), 0);
}
/// <summary>
/// 构建结构树,设置层级:并且完成参数映射的刷新
/// </summary>
/// <param name="parent"></param>
public void ReadyToWorking(IDeedyElement? parent = null)
public new void ReadyToWorking(IElementActivity? element = null, Output? output = null)
{
//TODO刷新参数映射
this.LinkTo(parent);
this.LinkTo(element);
if (this is IContainerElement container)
foreach (IDeedyElement element in container.Elements)
element.ReadyToWorking(this);
foreach (IElementActivity subElement in container.Elements)
subElement.ReadyToWorking(this);
}
public virtual IDeedyElement? Clone()
public virtual IElementActivity? Clone()
{
try
{
return XamlReader.Parse(XamlWriter.Save(this)) as IDeedyElement;
return XamlReader.Parse(XamlWriter.Save(this)) as IElementActivity;
}
catch { return null; }
}
@@ -92,13 +92,13 @@ namespace Deedy.Activity
catch { document = string.Empty; }
return result;
}
public static virtual bool TryDecode(string document, out IDeedyElement? element)
public static virtual bool TryDecode(string document, out IElementActivity? element)
{
IDeedyElement? instance = null;
IElementActivity? instance = null;
bool result = false;
try
{
instance = XamlReader.Parse(document) as IDeedyElement;
instance = XamlReader.Parse(document) as IElementActivity;
result = instance != null;
}
catch { }

View File

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Deedy.Activity
{
public interface IDeedyVisual : IDeedyElement
public interface IVisualElement : IElementActivity
{
}
}