C# dan REST son noktasına çağrı yapıyorum ve bir nesnesine serileştirilmiş olan json alıyorum. Bu nesnenin özelliklerinden biri dinamik bir özelliktir.JObject dinamik nesnesine dönüştürme
istemci sitesindemyObject.MyDynamicProp = new { Id = "MyId2134", Name = "MyName" };
json serileştirme dinamik özelliğinin değeri aşağıdaki değer içeren bir JObject geçerli:: Dinamik özelliğinin değeri bu gibi sunucu sitesinde bir anonim nesne olarak ayarlanır
{{
"id": "MyId2134",
"Name": "MyName"
}}
böyle özelliklere erişmek mümkün olması bekleniyor olurdu
:
var s = myObject.MyDynamicProp.Name;
ama ben va almak zorunda Name özelliği yerine bulmazsa lue böyle:
var s = myObject.MyDynamicProp["Name"].Value;
Böyle bir dinamik nesnesine JObject dönüştürerek çalıştı
ama döndürür JObject: Ben özelliklerini doğrudan çağırabilir öyle ki dinamik özellik değeri dönüştürebilir nasıl
var dyn = myObject.MyDynamicProp.ToObject<dynamic>();
?
var s = myObject.MyDynamicProp.Name;
GÜNCELLEME ...
Bana şu hata veriyor aşağıdakidynamic d = JsonConvert.DeserializeObject("{\"MyDynamicProp\": {\"id\": \"MyId2134\", \"Name\": \"MyName\"}}");
string name = d.MyDynamicProp.Name;
ran:
{Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: `Newtonsoft.Json.Linq.JObject' does not contain a definition for `MyDynamicProp'
at Microsoft.Scripting.Interpreter.ThrowInstruction.Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame) [0x00027]
Bunun bir olduğunu eklemek istiyorum Xamarin iOS projesi ve kod bir PCL kütüphanesinde bulunur.
bu çalışır neden: 'JObject' olan uygular [ 'IDynamicMetaObjectProvider'] (https://msdn.microsoft.com/en-us/library/System.Dynamic.IDynamicMetaObjectProvider.aspx) JToken'' dolaylı elde . Dinamik çalışmasına izin veren arayüz. – Richard
Evet, gerçekten. Sağol Richard. Bunu cevabıma ekleyebilir miyim? –
Bunu yapmaktan çekinmeyin. – Richard