using Luban.Job.Cfg.DataVisitors; using Luban.Job.Cfg.Defs; using System.Collections.Generic; namespace Luban.Job.Cfg.Datas { public class DBean : DType { public DefBean Type { get; } public DefBean ImplType { get; } public List Fields { get; } public override string TypeName => "bean"; public DBean(DefBean defType, DefBean implType, List fields) { this.Type = defType; this.ImplType = implType; this.Fields = fields; } public DType GetField(string fieldName) { if (ImplType.TryGetField(fieldName, out var _, out var findex)) { return Fields[findex]; } else { return null; } } public override void Apply(IDataActionVisitor visitor, T x) { visitor.Accept(this, x); } public override void Apply(IDataActionVisitor visitor, T1 x, T2 y) { visitor.Accept(this, x, y); } public override TR Apply(IDataFuncVisitor visitor) { return visitor.Accept(this); } public override TR Apply(IDataFuncVisitor visitor, T x) { return visitor.Accept(this, x); } } }