Exemple #1
0
        internal RowFieldsBase InitInstance(Row row)
        {
            this.Initialize();

            if (initializedInstance)
            {
                return(this);
            }

            var attr = rowType.GetCustomAttribute <FieldReadPermissionAttribute>();

            if (attr != null && attr.Permission != null)
            {
                var permission = attr.Permission;
                if (attr.ApplyToLookups)
                {
                    foreach (var field in this)
                    {
                        if (field.ReadPermission == null)
                        {
                            field.ReadPermission = permission;
                        }
                    }
                }
                else
                {
                    var idField   = (row as IIdRow).IdField as Field;
                    var nameField = row.GetNameField();
                    foreach (var field in this)
                    {
                        if (field.ReadPermission == null &&
                            !ReferenceEquals(idField, field) &&
                            !ReferenceEquals(nameField, field) &&
                            field.GetAttribute <LookupIncludeAttribute>() == null)
                        {
                            field.ReadPermission = permission;
                        }
                    }
                }
            }

            initializedInstance = true;
            return(this);
        }