Angenommen, ich weiß, dass Eigentum Color
eines Objekts eine Aufzählung zurückgibt, wie diese aussieht:Wie überprüfe ich die enum-Eigenschaft, wenn die Eigenschaft von dynamic in C# abgerufen wird?
enum ColorEnum {
Red,
Green,
Blue
};
und ich möchte überprüfen, ob ein bestimmtes Objekt unbekannter Art (die ich kenne Color
Eigenschaft hat) hat Color
Set zu Red
. Dies ist, was ich tun würde, wenn ich den Objekttyp weiß:
ObjectType thatObject = obtainThatObject();
if(thatObject.Color == ColorEnum.Red) {
//blah
}
Das Problem ist, ich habe keinen Verweis auf die Assembly mit ColorEnum
und weiß nicht, den Objekttyp.
Anstatt also habe ich die folgende Konfiguration:
dynamic thatObject = obtainThatObject();
und ich kann nicht werfen, weil ich nicht weiß, den Objekttyp (und den Aufzählungstyp). Wie sollte ich die überprüfen?
if(thatObject.Color.ToString() == "Red") {
//blah
}
funktioniert, aber es sieht aus wie die schlimmsten Beispiele für Cargo-Kult Code, den ich in "The Daily WTF" gesehen habe.
Wie überprüfe ich die Prüfung richtig?
Kennen Sie alle möglichen Werte des Aufzählungstypen in der Seitenanordnung und die numerischen Darstellungen? –
@YohDeadfall Ich würde mich lieber nicht darauf verlassen - niemand weiß, was sich dort ändert. – sharptooth
haben Sie Einfluss auf die 'requireThatObject()' (und ihren Rückgabetyp)? – stefankmitph