private static void SetExtendedColumnValues(
     Context context,
     BaseItemModel model,
     ExpandoObject data,
     Column[] columns)
 {
     columns?.ForEach(column => model.Value(
                          context: context,
                          column: column,
                          value: String(
                              data: data,
                              columnName: column.ColumnName)));
 }
        public override bool TrySetMember(SetMemberBinder binder, object value)
        {
            string name = binder.Name;

            Model.Value(
                context: Context,
                column: new Column(name),
                value: value.ToStr());
            switch (name)
            {
            case nameof(BaseModel.VerUp):
                Model.VerUp = value.ToBool();
                return(true);

            case nameof(BaseItemModel.Body):
                Model.Body = value.ToStr();
                return(true);

            case nameof(BaseItemModel.Title):
                Model.Title.Value = value.ToStr();
                return(true);
            }
            if (Model is IssueModel issueModel)
            {
                switch (name)
                {
                case nameof(IssueModel.StartTime):
                    issueModel.StartTime = value.ToDateTime();
                    return(true);

                case nameof(IssueModel.CompletionTime):
                    issueModel.CompletionTime.Value = value.ToDateTime();
                    return(true);

                case nameof(IssueModel.WorkValue):
                    issueModel.WorkValue.Value = value.ToDecimal();
                    return(true);

                case nameof(IssueModel.ProgressRate):
                    issueModel.ProgressRate.Value = value.ToDecimal();
                    return(true);

                case nameof(IssueModel.Status):
                    issueModel.Status.Value = value.ToInt();
                    return(true);

                case nameof(IssueModel.Manager):
                    issueModel.Manager = SiteInfo.User(
                        context: Context,
                        userId: value.ToInt());
                    return(true);

                case nameof(IssueModel.Owner):
                    issueModel.Owner = SiteInfo.User(
                        context: Context,
                        userId: value.ToInt());
                    return(true);

                case nameof(IssueModel.Locked):
                    issueModel.Locked = value.ToBool();
                    return(true);

                case nameof(IssueModel.ReadOnly):
                    issueModel.ReadOnly = value.ToBool();
                    return(true);
                }
            }
            else if (Model is ResultModel resultModel)
            {
                switch (name)
                {
                case nameof(ResultModel.Status):
                    resultModel.Status.Value = value.ToInt();
                    return(true);

                case nameof(ResultModel.Manager):
                    resultModel.Manager = SiteInfo.User(
                        context: Context,
                        userId: value.ToInt());
                    return(true);

                case nameof(ResultModel.Owner):
                    resultModel.Owner = SiteInfo.User(
                        context: Context,
                        userId: value.ToInt());
                    return(true);

                case nameof(ResultModel.Locked):
                    resultModel.Locked = value.ToBool();
                    return(true);

                case nameof(ResultModel.ReadOnly):
                    resultModel.ReadOnly = value.ToBool();
                    return(true);
                }
            }
            return(true);
        }