Convertit une chaîne de type objet
Le code que j'ai à mettre en œuvre prend une liste de données à partir d'un appel Ajax sur une page web.
Je sais que l'objet j'ai besoin de mettre à jour, mais chaque champ/valeur de la paire est à venir à travers une chaîne de valeurs et non pas comme leur propre type.
Donc je suis en train de travailler sur le type de la propriété, un moulage de la valeur que le nouveau type et le champ à l'aide de la réflexion.
Cependant j'obtiens l'erreur suivante pour autre chose que des chaînes de caractères.
Invalid cast from 'System.String' to 'System.TimeSpan'.
Le code je suis tenter de faire la conversion en est;
public void Update<T>(string fieldName, string fieldValue)
{
System.Reflection.PropertyInfo propertyInfo = typeof(T).GetProperty(fieldName);
Type propertyType = propertyInfo.PropertyType;
var a = Convert.ChangeType(fieldValue, propertyType);
}
Est donc l'objet cible.
- Votre erreur est de dire il n'y a pas natif de conversion à partir de la chaîne de plage de temps, cette méthode n'est pas capable de le faire. Je voudrais vous recommandons de vous renseigner sur la plage de temps docs et essayer de trouver un moyen astucieux de faire la conversion.
- Par curiosité, pourquoi ne pas l'utiliser ASP.NET MVC-modèle de liaison? (Ou n'est-ce pas un projet MVC?)
- Ce n'est pas seulement de Temps. C'est tout. Je ne peux pas convertir string en int, plage de temps, etc.
- c'est une application MVC ouais, mais je suis passé d'un objet json de fieldname, la valeur de l'id. j'ai besoin de trouver l'objet, puis définir la propriété de ce domaine. l'interface utilisateur est un tas de li éléments et le texte de chacun est ce qui est passé pour moi.
- Comme vous êtes de mentionner que vous recevez Json valeurs, dans ce cas peut-on utiliser
JObject.Parse(jsonValue).ToObject<FooBarType>()
ici. Avis sur cela ?
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de réponse absolue qui fonctionne pour tous les types. Mais, vous pouvez utiliser un TypeConverter au lieu de les Convertir, il fonctionne généralement mieux. Par exemple, il y a un TimeSpanConverter:
Pour la manipulation de JSON dans le MVC (et .NET en général) j'utilise JSON.NET. Il est inclus out-of-the-box dans la ASP.NET MVC 4 modèle de projet disponible sur NuGet autrement. La désérialisation chaîne JSON contenu est (en général) que de simple comme:
Si le JSON être passé n'est pas sérialisé modèle, vous pouvez créer un modèle de code pour correspondre au format JSON.
Si cela ne fonctionne pas pour votre scénario, vous pouvez essayer le
Convert
classe qui a des options pour la conversion si vous connaissez le type:Ou la
ChangeType
méthode si elle est dynamique:Afin d'utiliser
Convert
le type doivent êtreIConvertible
De MSDN
TimeSpan ne pas la mettre en œuvre ...
De sorte que vous pouvez vérifier avant d'appeler
Convert
ou ajoutertry{} catch{}