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(); }
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(); }