private ClassContext(Type type, MixinContextCollection mixins, ReadOnlyCollectionDecorator <Type> composedInterfaces) { _type = type; _mixins = mixins; _composedInterfaces = composedInterfaces; _cachedHashCode = CalculateHashCode(this); }
public void ApplyInheritanceForMixins(IEnumerable <MixinContext> ownMixins, ClassContext baseContext, ICollection <MixinContext> mixins) { foreach (MixinContext inheritedMixin in baseContext.Mixins) { if (!MixinContextCollection.ContainsOverrideForMixin(ownMixins, inheritedMixin.MixinType)) { mixins.Add(inheritedMixin); } } }
// A = overridden, B = override public Tuple <MixinContext, MixinContext> GetFirstOverrideThatIsNotOverriddenByBase(IEnumerable <MixinContext> baseMixins, IEnumerable <MixinContext> potentialOverrides) { foreach (MixinContext mixin in baseMixins) { MixinContext overrideForMixin; if ((overrideForMixin = MixinContextCollection.GetOverrideForMixin(potentialOverrides, mixin.MixinType)) != null && !MixinContextCollection.ContainsOverrideForMixin(baseMixins, overrideForMixin.MixinType)) { return(Tuple.Create(mixin, overrideForMixin)); } } return(null); }