Supponiamo che io so che la proprietà Color
di un oggetto restituisce un'enumerazione che assomiglia a questo:Come faccio a verificare la proprietà enum quando la proprietà è ottenuta dalla dinamica in C#?
enum ColorEnum {
Red,
Green,
Blue
};
e voglio verificare che un oggetto specifico di tipo sconosciuto (che io sappia ha Color
proprietà) ha Color
set a Red
. Questo è quello che vorrei fare se sapevo che il tipo di oggetto:
ObjectType thatObject = obtainThatObject();
if(thatObject.Color == ColorEnum.Red) {
//blah
}
Il problema è che non ho un riferimento per l'assemblea con ColorEnum
e non so il tipo di oggetto.
Così, invece ho la seguente configurazione:
dynamic thatObject = obtainThatObject();
e non posso lanciare perché io non conosco il tipo di oggetto (e il tipo enum). Come dovrei controllare lo Color
?
if(thatObject.Color.ToString() == "Red") {
//blah
}
funziona, ma sembra che i peggiori esempi di codice cargo cult che ho visto in "The Daily WTF".
Come si esegue il controllo correttamente?
Sai tutti i possibili valori del tipo enum nel montaggio laterale e le loro rappresentazioni numeriche? –
@YohDeadfall Preferisco non fare affidamento su questo - nessuno sa cosa cambi lì. – sharptooth
hai influenza sul 'getThatObject()' (e il suo tipo di ritorno)? – stefankmitph