71 lines
2.0 KiB
C#
71 lines
2.0 KiB
C#
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace Io.Github.Kerwinxu.LibShapes.Core.Shape
|
|
{
|
|
/// <summary>
|
|
/// 变量,主要是支持外部输入变量
|
|
/// </summary>
|
|
public class ShapeVar : ShapeStretch
|
|
{
|
|
|
|
[DescriptionAttribute("对应excel中的一列数据"), DisplayName("变量名"), CategoryAttribute("变量")]
|
|
public string VarName { get; set; }
|
|
|
|
|
|
[Browsable(false)]//不在PropertyGrid上显示
|
|
public string VarValue { get; set; }
|
|
|
|
[DescriptionAttribute("没有指定变量时的文本"), DisplayName("文本"), CategoryAttribute("文本")]
|
|
public string StaticText { get; set; }
|
|
|
|
|
|
public override ShapeEle DeepClone()
|
|
{
|
|
// 这里用json的方式
|
|
string json = JsonConvert.SerializeObject(this);
|
|
return JsonConvert.DeserializeObject<ShapeVar>(json);
|
|
//throw new NotImplementedException();
|
|
}
|
|
|
|
public override void setVals(Dictionary<string, string> vars)
|
|
{
|
|
if (VarName != null)
|
|
{
|
|
//首先判断是否有这个
|
|
if (vars.ContainsKey(VarName))
|
|
{
|
|
VarValue = vars[VarName]; // 这个变量的值
|
|
}
|
|
else
|
|
{
|
|
VarValue = string.Empty; // 没有是空字符串。
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得文本
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public virtual string getText()
|
|
{
|
|
return string.IsNullOrEmpty(this.VarName) ? StaticText : this.VarValue;
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
var shape = obj as ShapeVar;
|
|
if (shape == null) return false; // 转换失败就是不同啦
|
|
|
|
return base.Equals(obj) && this.VarName == shape.VarName;
|
|
}
|
|
|
|
}
|
|
}
|