public void UnrelateTo(BaseBeek relatedBeek, BeekRelationTypes relationType) { lock (relations) { relations = relations.Where(r => !(r.Key.Equals(relatedBeek) && r.Value.Equals(relationType))).ToList(); } }
public bool IsBeekRelatedToMeAs(BaseBeek relatedBeek, BeekRelationTypes relationType) { return relations.Any(r => r.Key.Equals(relatedBeek) && r.Value.Equals(relationType)); }
public void RelateTo(BaseBeek relatedBeek, BeekRelationTypes otherIsWhatOfMe) { if (relatedBeek.Equals(this)) { throw new ArgumentException("Cannot relate a beek to itself", "relatedBeek"); } lock (relations) { if (!IsBeekRelatedToMeAs(relatedBeek, otherIsWhatOfMe)) { relations.Add(new KeyValuePair<BaseBeek, BeekRelationTypes>(relatedBeek, otherIsWhatOfMe)); } } }
public IEnumerable<BaseBeek> GetRelatedBeekForRelationType(BeekRelationTypes relationType) { return relations.Where(r => r.Value.GetType().Equals(relationType.GetType())) .Select(r=>r.Key); }