Laden...

Zwei Werte von Properties vergleichen (Reflection)

Erstellt von TBR vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.038 Views
T
TBR Themenstarter:in
154 Beiträge seit 2009
vor 13 Jahren
Zwei Werte von Properties vergleichen (Reflection)

Hallo,
ich hab hier folgendes:

Ich hab 2 Objekte (beides Textboxen in dem Fall), sowie zwei PropertInfos von denen (beide vom Property "Text").

Ich will nun prüfen ob die Werte der PropertyInfos gleich sind, ohne speziell casten zu müssen. Sonst müsst ich wieder für jeden Datentyp einen neuen Comparer basteln...

Geht das irgendwie?

...GetValue(...) == ...GetValue(...) geht nicht 😦

Danke euch!
TBR

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo TBR,

vielleicht hilft dir die Diskussion Get property value from string using reflection in C# weiter. Ansonsten mal die anderen Suchergebnisse für Googlesuche nach c# reflection get property value durchgucken ...

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

T
TBR Themenstarter:in
154 Beiträge seit 2009
vor 13 Jahren

Das hilft mir nicht weiter, du hast mich wohl missverstanden.

Ich will die Eigenschaften von beiden Objekten miteinadner vergleichen ohne zu Casten. Aber Objekt == Objekt geht nicht, jedenfalls bei string nicht.

Es wär halt viel Aufwand für jeden Datentyp den ich brauch wieder eine Klasse oder Eigenschaft oder what ever zu basteln ...

Irgendwie muss mans doch lösen können oder?

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo TBR,

versuche es mal mit Equals
obj1.Equals(obj2);

Gruß
Michael

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo tbr,

im Blogpost Comparing the properties of two objects via Reflection and C# habe ich unter Directly comparing values folgenden Code gefunden:

object valueA;
object valueB;

valueA = propertyInfo.GetValue(objectA, null);
valueB = propertyInfo.GetValue(objectB, null);
bool result;
IComparable selfValueComparer;

selfValueComparer = valueA as IComparable;

if (valueA == null && valueB != null || valueA != null && valueB == null)
  result = false; // one of the values is null
else if (selfValueComparer != null && selfValueComparer.CompareTo(valueB) != 0)
  result = false; // the comparison using IComparable failed
else if (!object.Equals(valueA, valueB))
  result = false; // the comparison using Equals failed
else
  result = true; // match

return result;

Hier wird auf verschiedene Vergleichsstrategien zurückgegriffen – versuch es doch mal damit.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

T
TBR Themenstarter:in
154 Beiträge seit 2009
vor 13 Jahren

Ohje ...
Das Sample hab ich gefunden und versucht, war aber dann nich das richtige und das anpassen ging irgendwie schwer - war ein wenig verplant.

Da bin ich auch ned auf die Idee gekommen das zu nehmen ...

Aber danke 😃 Es geht nun tatsächlich 😃

L
667 Beiträge seit 2004
vor 13 Jahren

Es müsste doch grundsätzlich auch gehen, wenn man erst Convert.ChangeType(value1, typeof(value1)) auf beide anwendet und dann gleich immer Equals benutzt, oder ? Zumindest bei primitiven Typen...

"It is not wise to be wise" - Sun Tzu

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Lynix,

hm, kommt mir komisch vor, den Typ der Objekte vor dem Vergleichen zu ändern.

herbivore