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
{
///
/// 变量,主要是支持外部输入变量
///
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(json);
//throw new NotImplementedException();
}
public override void setVals(Dictionary vars)
{
if (VarName != null)
{
//首先判断是否有这个
if (vars.ContainsKey(VarName))
{
VarValue = vars[VarName]; // 这个变量的值
}
else
{
VarValue = string.Empty; // 没有是空字符串。
}
}
}
///
/// 取得文本
///
///
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;
}
}
}