Je récupère JSON avec un type d'objet différent dans une partie. J'ai fait cette partie comme dynamique.
J'ai besoin d'obtenir des données de cet objet afin que j'ai créé la classe qui ressemble à la même chose que les données dynamiques telles que ci-dessous: P>
AnyAttributes: {object} Title: "title" ViewElements: object[0]
3 Réponses :
Lorsque vous utilisez comme code> pour casting, il attribue
null code> à la destination si la source est null ou que ce n'est pas convertible. Vous ne pouvez donc pas l'utiliser avec des types de valeur. Où comme ceci (
jsonobj.some = (spécifiqueObject1) jsonobj.some code>) jette
invalidalcastxception code>
si la source est null ou non convertible. var @switch = new Dictionary<Type, Action> {
{ typeof(x), () => jsonObj.Some = (SpecificObject1)jsonObj.Some },
{ typeof(y), () => ......}
};
Jette une exception que j'ai à nouveau emballé et que les propriétés sont les mêmes; (
@miechooy: ce qui signifie que soit la source est null ou non convertible. code>
Vous ne pouvez pas modifier le type d'objet - Soyez-le Cela impliquerait que vous puissiez à cela: p> qui est évident non-sens. la même chose s'applique à une instance de dynamique code> ou tout autre type de compilation. Ainsi, même si vous assignez
jsonobj.some comme spécificitéObject1 code> à
jsonobj.some code> Vous ne pouvez pas changer son em> compiletime em> type (probablement
dynamique dans votre cas que est em> un type de compilétime).
A code> est de type
int code> qui ne peut pas être changé. Donc, même si vous souhaitez lancer
a code> à une chaîne code>, vous ne pouvez pas attribuer le résultat (qui serait de type
Sting code>) sur
A code> car
A code> est de type
int code>. p>
dynamique code> : P>
jsonObj.Some.Title = "NewTitle";
Vous pouvez utiliser une fonctionnalité SLAPPER.Automapper. Utilisez MapDynamic () méthode pour vos besoins.
public class Person { public int Id; public string FirstName; public string LastName; } [Test] public void Can_Map_Matching_Field_Names_Using_Dynamic() { // Arrange dynamic dynamicPerson = new ExpandoObject(); dynamicPerson.Id = 1; dynamicPerson.FirstName = "Clark"; dynamicPerson.LastName = "Kent"; // Act var person = Slapper.AutoMapper.MapDynamic<Person>( dynamicPerson ) as Person; // Assert Assert.NotNull( person ); Assert.That( person.Id == 1 ); Assert.That( person.FirstName == "Clark" ); Assert.That( person.LastName == "Kent" ); }
Merci de pointer vers Slapper.Automapper. Astuce: Il y a même une préerelase sur Nuget pour .NET Standard ( # 44 ).
Quel est le contenu de
jsonobj.some code>?