Al Raven 2.5, il supporto per gli oggetti dinamici sembra essere principalmente per il lato di lettura di cose, e non è così facile da impostare le proprietà su un oggetto esistente perché Raven.Abstractions.Linq.DynamicJsonObject
, che eredita DynamicObject
, solo implementa la lettura/invocare metodi del contratto dinamico, come TryGetMember
, TryGetIndex
e TryInvokeMember
. ma nessuno degli articoli come TrySetMember
.
Tuttavia, se si trasmette a IDynamicJsonObject
, fornisce l'accesso al numero interno RavenJObject
che è possibile manipolare.
Questo esempio di codice dovrebbe illustrare come:
using (var session = store.OpenSession())
{
dynamic entity = new ExpandoObject();
entity.Id = "DynamicObjects/1";
entity.Hello = "World";
session.Store(entity);
session.SaveChanges();
}
using (var session = store.OpenSession())
{
var json = session.Load<dynamic>("DynamicObjects/1") as IDynamicJsonObject;
json.Inner["Name"] = "Lionel Ritchie";
json.Inner["Hello"] = "Is it me you're looking for?";
session.SaveChanges();
}
using (var session = store.OpenSession())
{
dynamic loadedAgain = session.Load<dynamic>("DynamicObjects/1");
Console.WriteLine("{0} says Hello, {1}", loadedAgain.Name, loadedAgain.Hello);
// -> Lionel Ritchie says Hello, Is it me you're looking for?"
}
fonte
2014-06-17 19:56:53
soluzione molto semplice. Ho provato molti modi per arrivare a questo oggetto "interiore". Non sapevo che il solo casting di IDynamicJsonObject avrebbe funzionato, grazie. – Quintonn