Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Zwei Werte von Properties vergleichen (Reflection)
TBR
myCSharp.de - Member



Dabei seit:
Beiträge: 159

Themenstarter:

Zwei Werte von Properties vergleichen (Reflection)

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
TBR
myCSharp.de - Member



Dabei seit:
Beiträge: 159

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
michlG
myCSharp.de - Experte

Avatar #avatar-2909.png


Dabei seit:
Beiträge: 3652
Herkunft: Naturns - Südtirol - Italien

beantworten | zitieren | melden

Hallo TBR,

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

Gruß
Michael
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
TBR
myCSharp.de - Member



Dabei seit:
Beiträge: 159

Themenstarter:

beantworten | zitieren | melden

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 :)
private Nachricht | Beiträge des Benutzers
Lynix
myCSharp.de - Member



Dabei seit:
Beiträge: 670
Herkunft: Saarland

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Lynix,

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

herbivore
private Nachricht | Beiträge des Benutzers