Exemplo n.º 1
0
        public void DeriveConcreteRoleTypes(HashSet <RoleType> sharedRoleTypes)
        {
            sharedRoleTypes.Clear();
            var removedRoleTypes = sharedRoleTypes;

            removedRoleTypes.UnionWith(this.ConcreteRoleTypeByRoleType.Keys);

            foreach (var roleType in this.RoleTypes)
            {
                removedRoleTypes.Remove(roleType);

                ConcreteRoleType concreteRoleType;
                if (!this.concreteRoleTypeByRoleType.TryGetValue(roleType, out concreteRoleType))
                {
                    concreteRoleType = new ConcreteRoleType(this, roleType);
                    this.concreteRoleTypeByRoleType[roleType] = concreteRoleType;
                }
            }

            foreach (var roleType in removedRoleTypes)
            {
                this.concreteRoleTypeByRoleType.Remove(roleType);
            }

            this.concreteRoleTypes = this.concreteRoleTypeByRoleType.Values.ToArray();
        }
Exemplo n.º 2
0
        public void DeriveConcreteRoleTypes(HashSet<RoleType> sharedRoleTypes)
        {
            sharedRoleTypes.Clear();
            var removedRoleTypes = sharedRoleTypes;
            removedRoleTypes.UnionWith(this.ConcreteRoleTypeByRoleType.Keys);

            foreach (var roleType in this.RoleTypes)
            {
                removedRoleTypes.Remove(roleType);

                ConcreteRoleType concreteRoleType;
                if (!this.concreteRoleTypeByRoleType.TryGetValue(roleType, out concreteRoleType))
                {
                    concreteRoleType = new ConcreteRoleType(this, roleType);
                    this.concreteRoleTypeByRoleType[roleType] = concreteRoleType;
                }
            }

            foreach (var roleType in removedRoleTypes)
            {
                this.concreteRoleTypeByRoleType.Remove(roleType);
            }

            this.concreteRoleTypes = this.concreteRoleTypeByRoleType.Values.ToArray();
        }