Je veux demander comment on peut comparer deux types en C#.Comment comparer 2 types similaires en C#
Mon scénario est le suivant:
Nullable<int> Rating;
int NeedCompareType;
Chaque fois que je compare ces deux, il retournera faux résultat. Il ya de toute façon pour moi de retourner vrai dans ce cas, car int
type ont dans les deux lignes.
Ma ligne comparer est:
if(Rating.GetType() == NeedCompareType.GetType())
Edit: En fait, c'était mon code de programme:
public object this[string propertyName]
{
get
{
PropertyInfo property = GetType().GetProperty(propertyName);
return property.GetValue(this, null);
}
set
{
PropertyInfo property = GetType().GetProperty(propertyName);
IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);
if (property.PropertyType == typeof(System.DateTime))
{
property.SetValue(this, Convert.ToDateTime(value, culture), null);
}
else if (property.PropertyType == typeof(int))
{
property.SetValue(this, Int32.Parse((string)value));
}
else
{
property.SetValue(this, value, null);
}
}
}
L'objectif de ce code est de jeter la valeur que le contrôleur reçoit du navigateur en tant que type de chaîne, je veux convertir en type de chaîne au type approprié d'une propriété unknown yet
du modèle (dans ce cas, c'était le public Nullable<int> Rating { get; set; }
).
Comme vous le savez je veux quand le propertyName = "Rating"
, il devrait exécuter la 2ème instruction if, mais ce ne sera pas parce que les typeof(int)
et typeof(Nullable<int>)
seront différentes.
Désolé pour mon mauvais anglais
Leurs types * sont * différents. Quel résultat attendez-vous? Pourquoi devrait-il être vrai? – Dennis
C'est pourquoi je demande comment nous pouvons y parvenir. Parce que 'Nullable' aura de toute façon le type 'int'. –
@ VũHoàngHuy: Ce sera quand il est en boîte, oui. J'ai répondu à votre question du mieux que je peux, mais c'est vraiment une question assez floue, d'autant plus que votre affirmation concernant la ligne de comparaison est incorrecte. Un programme court mais complet démontrant le problème serait vraiment utile. –