private IFigure Figure_Compilation_Helper_Test(Figure str, PropertiesOnlyModel fom)
        {
            IFigure rts = str.Combine();

            fom.Id = 202;
            rts[0] = 202;
            Assert.Equal(fom.Id, rts[0]);
            rts["Id"] = 404;
            Assert.NotEqual(fom.Id, rts[nameof(fom.Id)]);
            rts[nameof(fom.Name)] = fom.Name;
            Assert.Equal(fom.Name, rts[nameof(fom.Name)]);
            rts.SerialCode = new Ussn(DateTime.Now.ToBinary());
            string hexTetra = rts.SerialCode.ToString();
            Ussn   ssn      = new Ussn(hexTetra);

            Assert.Equal(ssn, rts.SerialCode);

            for (int i = 1; i < str.Rubrics.Count; i++)
            {
                var r = str.Rubrics[i].RubricInfo;
                if (r.MemberType == MemberTypes.Field)
                {
                    var fi = fom.GetType().GetField(((FieldInfo)r).Name);
                    if (fi != null)
                    {
                        rts[r.Name] = fi.GetValue(fom);
                    }
                }
                if (r.MemberType == MemberTypes.Property)
                {
                    var pi = fom.GetType().GetProperty(((PropertyInfo)r).Name);
                    if (pi != null)
                    {
                        rts[r.Name] = pi.GetValue(fom);
                    }
                }
            }

            for (int i = 1; i < str.Rubrics.Count; i++)
            {
                var r = str.Rubrics[i].RubricInfo;
                if (r.MemberType == MemberTypes.Field)
                {
                    var fi = fom.GetType().GetField(((FieldInfo)r).Name);
                    if (fi != null)
                    {
                        Assert.Equal(rts[r.Name], fi.GetValue(fom));
                    }
                }
                if (r.MemberType == MemberTypes.Property)
                {
                    var pi = fom.GetType().GetProperty(((PropertyInfo)r).Name);
                    if (pi != null)
                    {
                        Assert.Equal(rts[r.Name], pi.GetValue(fom));
                    }
                }
            }
            return(rts);
        }
        private object  InstantFigure_Compilation_Helper_Test(InstantFigure str, FieldsAndPropertiesModel fom)
        {
            object rts = str.NewObject();

            fom.Id            = 202;
            ((IFigure)rts)[0] = 202;
            Assert.Equal(fom.Id, ((IFigure)rts)[0]);
            ((IFigure)rts)["Id"] = 404;
            Assert.NotEqual(fom.Id, ((IFigure)rts)[nameof(fom.Id)]);
            ((IFigure)rts)[nameof(fom.Name)] = fom.Name;
            Assert.Equal(fom.Name, ((IFigure)rts)[nameof(fom.Name)]);
            ((IFigure)rts).SystemSerialCode = new Ussn(DateTime.Now.ToBinary());
            string hexTetra = ((IFigure)rts).SystemSerialCode.ToString();
            Ussn   ssn      = new Ussn(hexTetra);

            Assert.Equal(ssn, ((IFigure)rts).SystemSerialCode);

            for (int i = 1; i < str.Rubrics.Count; i++)
            {
                var r = str.Rubrics[i].RubricInfo;
                if (r.MemberType == MemberTypes.Field)
                {
                    var fi = fom.GetType().GetField(((FieldInfo)r).Name);
                    if (fi != null)
                    {
                        ((IFigure)rts)[r.Name] = fi.GetValue(fom);
                    }
                }
                if (r.MemberType == MemberTypes.Property)
                {
                    var pi = fom.GetType().GetProperty(((PropertyInfo)r).Name);
                    if (pi != null)
                    {
                        ((IFigure)rts)[r.Name] = pi.GetValue(fom);
                    }
                }
            }

            for (int i = 1; i < str.Rubrics.Count; i++)
            {
                var r = str.Rubrics[i].RubricInfo;
                if (r.MemberType == MemberTypes.Field)
                {
                    var fi = fom.GetType().GetField(((FieldInfo)r).Name);
                    if (fi != null)
                    {
                        Assert.Equal(((IFigure)rts)[r.Name], fi.GetValue(fom));
                    }
                }
                if (r.MemberType == MemberTypes.Property)
                {
                    var pi = fom.GetType().GetProperty(((PropertyInfo)r).Name);
                    if (pi != null)
                    {
                        Assert.Equal(((IFigure)rts)[r.Name], pi.GetValue(fom));
                    }
                }
            }
            return(rts);
        }
        public Labor(Laborer laborer) : base(() => laborer.Work.Execute())
        {
            Name          = laborer.LaborerName;
            Laborer       = laborer;
            Laborer.Labor = this;
            Box           = new NoteBox(Laborer.LaborerName);
            Box.Labor     = this;

            SerialCode = new Ussn(laborer.Work.UniqueKey, 0, 0, 0, 0, DateTime.Now.ToBinary());
        }
        public Labor(string name, IDeputy method) : base(() => method.Execute())
        {
            Name          = name;
            Laborer       = new Laborer(name, method);
            Laborer.Labor = this;
            Box           = new NoteBox(Laborer.LaborerName);
            Box.Labor     = this;

            SerialCode = new Ussn(method.UniqueKey, 0, 0, 0, 0, DateTime.Now.ToBinary());
        }
 public MemberRubric(IMemberRubric member)
 {
     RubricInfo = ((MemberInfo)member);
     RubricName = member.RubricName;
     RubricId   = member.RubricId;
     Visible    = member.Visible;
     Editable   = member.Editable;
     if (RubricInfo.MemberType == MemberTypes.Method)
     {
         SystemSerialCode = new Ussn((new String(RubricParameterInfo
                                                 .SelectMany(p => p.ParameterType.Name)
                                                 .ToArray()) + "_" + RubricName).GetHashKey64());
     }
     else
     {
         SystemSerialCode = new Ussn(RubricName.GetHashKey64());
     }
 }