protected bool AssignItemsFlags(ref FOptItemFlags flags, bool throwOnError) { FOptItemFlags changes = itemFlagsDefault ^ flags; FOptItemFlags validChanges = changes & itemFlagsMask; FOptItemFlags invalidChanges = (changes | itemFlagsMask) ^ itemFlagsMask; if (throwOnError && (invalidChanges != FOptItemFlags.None)) //проверяем флаги, которые устанавливаются или сбрасываются { throw new Exception("При добавлении элемента в опцию " + ID + " устанавливаются или сбрасываются недопустимые флаги: " + invalidChanges.ToString() + "."); } flags = itemFlagsDefault ^ validChanges; //применяем пользовательские изменения к itemFlagsDefault if ((flags & (FOptItemFlags.Less | FOptItemFlags.EqualsOrMore)) == (FOptItemFlags.Less | FOptItemFlags.EqualsOrMore)) { throw new Exception("Недопустимо одновременное применение флагов: Less,More и Equals\nДобавление элемента в опцию " + ID + " ."); } if (flags == FOptItemFlags.None) { throw new Exception("Необходимо указать хотя бы один флаг.\nДобавление элемента в опцию " + ID + " ."); } return(true); }
public FOpt(Dso ds, string id) { this.ds = ds; flags = FOptFlags.None; this.id = id; description = ""; is4Sql = true; is4User = true; order = ds.opts.Count; ds.opts.Add(this); }
public virtual void LoadFromXmlElement(XmlElement el) { flags = (FOptFlags)int.Parse(el.GetAttribute("flags")); items.Clear(); if (el.SelectNodes("Item") != null) { foreach (XmlElement elIt in el.SelectNodes("Item")) { Add(elIt.GetAttribute("value"), (FOptItemFlags)int.Parse(elIt.GetAttribute("flags")), false); } } }