Пример #1
0
        public static AccessValue operator &(AccessValue a, AccessValue b)
        {
            AccessValue c = new AccessValue();

            foreach (var aItem in a.Items)
            {
                var bItem = b.Get(aItem.Identity);
                if (bItem != AccessItem.Empty)
                {
                    c.Add(aItem.Identity, aItem.Access & bItem.Access);
                }
            }

            foreach (var bItem in b.Items)
            {
                var aItem = a.Get(bItem.Identity);
                if (aItem != AccessItem.Empty)
                {
                    c.Add(bItem.Identity, aItem.Access & bItem.Access);
                }
            }
            return(c);
        }
Пример #2
0
        public static AccessValue operator |(AccessValue a, AccessValue b)
        {
            AccessValue c = new AccessValue();

            foreach (var aItem in a.Items)
            {
                if (b.items.TryGetValue(aItem.Identity, out var bItem))
                {
                    c.Add(aItem.Identity, aItem.Access | bItem.Access);
                }
                else
                {
                    c.Add(aItem.Identity, aItem.Access);
                }
            }
            foreach (var bItem in b.Items)
            {
                if (!a.items.TryGetValue(bItem.Identity, out var aItem))
                {
                    c.Add(bItem.Identity, bItem.Access);
                }
            }
            return(c);
        }