J'ai un Type, une Chaîne et un Objet.
Existe-t-il un moyen d'appeler la méthode d'analyse ou de conversion pour ce type de chaîne de façon dynamique ?
En gros, comment supprimer les instructions if dans cette logique ?
object value = new object();
String myString = "something";
Type propType = p.PropertyType;
if(propType == Type.GetType("DateTime"))
{
value = DateTime.Parse(myString);
}
if (propType == Type.GetType("int"))
{
value = int.Parse(myString);
}
Et faire quelque chose de plus comme ça.
object value = new object();
String myString = "something";
Type propType = p.PropertyType;
//this doesn't actually work
value = propType .Parse(myString);
1 votes
Vous ne montrez pas comment
p
est défini, une faute de frappe ?1 votes
Au minimum, vous devriez utiliser l'option
is
opérateur. J'ai mis à jour votre question pour vérifier correctement le type sans utiliser la réflexion.3 votes
@David Pfeffer,
is
est appliqué de manière incorrecte.is
dans ce contexte ne retournera jamais vrai [propType
sera toujours de typeType
]. vous voulez utiliserpropType == typeof(DateTime)
0 votes
J'ai le Type. J'ai laissé de côté le code où j'instancie P. Mais supposons que je l'ai.
0 votes
@johnny g, Oh, vous avez raison, j'ai complètement mal lu le code. Je vais annuler ma modification.
1 votes
Hehe, pas de soucis, je l'ai repéré parce que je l'ai fait tellement de fois moi-même ;) je l'aurais modifié pour l'utiliser.
typeof
aussi, mais j'ai dépensé mon représentant sur une question de prime :P