internal override ThreeValuedLogic Evaluate(Strategy strategy) { object value = strategy.GetCompositeRole(this.roleType.RelationType); if (value == null) { return(ThreeValuedLogic.False); } object equalsValue = this.equals; if (this.equals is IRoleType) { var equalsRole = (IRoleType)this.equals; equalsValue = strategy.GetCompositeRole(equalsRole.RelationType); } if (equalsValue == null) { return(ThreeValuedLogic.False); } return(value.Equals(equalsValue) ? ThreeValuedLogic.True : ThreeValuedLogic.False); }
internal override ThreeValuedLogic Evaluate(Strategy strategy) { IObject roleStrategy = strategy.GetCompositeRole(this.roleType.RelationType); if (roleStrategy == null) { return(ThreeValuedLogic.False); } return(this.containingExtent.Contains(roleStrategy) ? ThreeValuedLogic.True : ThreeValuedLogic.False); }
internal override ThreeValuedLogic Evaluate(Strategy strategy) { var containing = new HashSet <IObject>(this.containingEnumerable); var roleStrategy = strategy.GetCompositeRole(this.roleType.RelationType); if (roleStrategy == null) { return(ThreeValuedLogic.False); } return(containing.Contains(roleStrategy) ? ThreeValuedLogic.True : ThreeValuedLogic.False); }
internal override ThreeValuedLogic Evaluate(Strategy strategy) { var role = strategy.GetCompositeRole(this.roleType.RelationType); if (role == null) { return(ThreeValuedLogic.False); } // TODO: Optimize var roleObjectType = role.Strategy.Class; if (roleObjectType.Equals(this.objectType)) { return(ThreeValuedLogic.True); } var @interface = this.objectType as IInterface; return((@interface != null && roleObjectType.ExistSupertype(@interface)) ? ThreeValuedLogic.True : ThreeValuedLogic.False); }