public bool ContainsConcreteClass(IComposite objectType, IObjectType concreteClass) { object concreteClassOrClasses; if (!this.concreteClassesByObjectType.TryGetValue(objectType, out concreteClassOrClasses)) { if (objectType.ExistExclusiveClass) { concreteClassOrClasses = objectType.ExclusiveClass; this.concreteClassesByObjectType[objectType] = concreteClassOrClasses; } else { concreteClassOrClasses = new HashSet <IObjectType>(objectType.Classes); this.concreteClassesByObjectType[objectType] = concreteClassOrClasses; } } if (concreteClassOrClasses is IObjectType) { return(concreteClass.Equals(concreteClassOrClasses)); } var concreteClasses = (HashSet <IObjectType>)concreteClassOrClasses; return(concreteClasses.Contains(concreteClass)); }
internal bool ContainsConcreteClass(IObjectType container, IObjectType containee) { if (container.IsClass) { return(container.Equals(containee)); } HashSet <IObjectType> concreteClasses; if (!this.concreteClassesByObjectType.TryGetValue(container, out concreteClasses)) { concreteClasses = new HashSet <IObjectType>(((IInterface)container).Subclasses); this.concreteClassesByObjectType[container] = concreteClasses; } return(concreteClasses.Contains(containee)); }
public bool ContainsConcreteClass(IComposite objectType, IObjectType concreteClass) { object concreteClassOrClasses; if (!this.concreteClassesByObjectType.TryGetValue(objectType, out concreteClassOrClasses)) { if (objectType.ExistExclusiveClass) { concreteClassOrClasses = objectType.ExclusiveClass; this.concreteClassesByObjectType[objectType] = concreteClassOrClasses; } else { concreteClassOrClasses = new HashSet<IObjectType>(objectType.Classes); this.concreteClassesByObjectType[objectType] = concreteClassOrClasses; } } if (concreteClassOrClasses is IObjectType) { return concreteClass.Equals(concreteClassOrClasses); } var concreteClasses = (HashSet<IObjectType>)concreteClassOrClasses; return concreteClasses.Contains(concreteClass); }
internal bool ContainsConcreteClass(IObjectType objectType, IObjectType concreteClass) { object concreteClassOrClasses; if (!this.concreteClassesByObjectType.TryGetValue(objectType, out concreteClassOrClasses)) { if (objectType.IsClass) { concreteClassOrClasses = objectType; this.concreteClassesByObjectType[objectType] = concreteClassOrClasses; } else { concreteClassOrClasses = new HashSet<IObjectType>(((IInterface)objectType).Subclasses); this.concreteClassesByObjectType[objectType] = concreteClassOrClasses; } } if (concreteClassOrClasses is IObjectType) { return concreteClass.Equals(concreteClassOrClasses); } var concreteClasses = (HashSet<IObjectType>)concreteClassOrClasses; return concreteClasses.Contains(concreteClass); }