/// <summary> /// Checks the relevance fachkenntnis: Falls der Charakter einen höheren Wert besitzt, als die Restriktionen, wird true zurück gegeben /// Bemerkung: Zu prüfenden Charakterwerte können auch die Sinne sein, welche als Liste übergeben werden. Dann müssen alle Sinne des Charakters mit Restriktion geprüft werden. /// <returns><c>true</c>, if relevance fachkenntnis was checked, <c>false</c> otherwise.</returns> /// <param name="fkObject">Fk object.</param> private bool CheckRelevanceFertigkeit(List <LENEValue> restrictionEigenschaften) { //Hole Reflektionen der Charaktereigenschaften List <FieldInfo> eigenschaftenCharakterReflect = mCharacterHelper.GetCharacterFieldValues(); //Falls keine Restriktion vorliegt, ist die Eigenschaft relevant! if (restrictionEigenschaften == null || restrictionEigenschaften.Count == 0) { return(true); } foreach (var item in restrictionEigenschaften) { foreach (FieldInfo eigenschaftReflect in eigenschaftenCharakterReflect) { int?characterValue = eigenschaftReflect.GetValue(mCharacterHelper.mCharacter) as int?; if (characterValue != null) { //Fertigkeit zurückgeben LENEValue newObject = new LENEValue(); newObject.name = eigenschaftReflect.Name; newObject.val = characterValue.Value; if (ReflectValue(item, newObject) == true) { return(true); } } else //könnte liste sein { if (typeof(IList).IsAssignableFrom(eigenschaftReflect.FieldType)) { var listValues = eigenschaftReflect.GetValue(mCharacterHelper.mCharacter); // By now, we know that this is assignable from IList, so we can safely cast it. foreach (var element in listValues as IList) { Type t = element.GetType(); if (t.Equals(typeof(Sinn))) { Sinn sElement = element as Sinn; LENEValue newElement = new LENEValue(); newElement.name = sElement.name; newElement.val = sElement.value; if (ReflectValue(item, newElement) == true) { return(true); } } } } } } } //Falls nichts gefunden, Test fehlgeschlagen return(false); }
/// <summary> /// Reflects the value. /// Prüft, der Charakterwert die Restriktion übertrifft /// </summary> /// <returns><c>true</c>, if value was reflected, <c>false</c> otherwise.</returns> /// <param name="item">Item.</param> /// <param name="eigenschaftReflect">Eigenschaft reflect.</param> private bool ReflectValue(LENEValue item, LENEValue eigenschaftReflect) { if (item.VZPositiv == true && eigenschaftReflect.name == item.name && eigenschaftReflect.val >= item.val) { return(true); } else { if (item.VZPositiv == false && eigenschaftReflect.name == item.name && eigenschaftReflect.val <= item.val) { return(true); } } return(false); }