public override string WhereRule() { if (!_relatedObjectsType.HasValue) { return(""); } int relCount = _relatedObjects.Count; string err = "WR1 RelAssigns: Assigned related objects must comply with the contraint given by the RelatedObjectsType.\n"; switch (RelatedObjectsType.Value) { case IfcObjectType.Product: return(_relatedObjects.OfType <IfcProduct>().Count() == relCount ? "" : err); case IfcObjectType.Process: return(_relatedObjects.OfType <IfcProcess>().Count() == relCount ? "" : err); case IfcObjectType.Control: return(_relatedObjects.OfType <IfcControl>().Count() == relCount ? "" : err); case IfcObjectType.Resource: return(_relatedObjects.OfType <IfcResource>().Count() == relCount ? "" : err); case IfcObjectType.Actor: return(_relatedObjects.OfType <IfcActor>().Count() == relCount ? "" : err); case IfcObjectType.Group: return(_relatedObjects.OfType <IfcGroup>().Count() == relCount ? "" : err); case IfcObjectType.Project: return(_relatedObjects.OfType <IfcProject>().Count() == relCount ? "" : err); case IfcObjectType.NotDefined: return(""); default: return("WR1 RelAssigns: Unknown ObjectType\n"); } }