public void ProcessCollection <T>(IReadOnlyValueDescriptor <ICollection <T> > descriptor) { int count; var collection = descriptor.Get(); if (!_store.TryGet(descriptor.StateMember.Name + ".Count", out count)) { return; } var temp = _store; for (int i = 0; i < count; i++) { var strongBox = new StrongBox <T>(default(T)); descriptor.Route(new StrongBoxStateMember <T>(strongBox, "Item_" + i), typeof(T), strongBox, false); collection.Add(strongBox.Value); } _store = temp; }
public void ProcessPrimitives <[Primitive] T>(IReadOnlyValueDescriptor <T> descriptor) { var value = descriptor.Get(); // _store.Set("Type", value.GetType()); _store.Set(descriptor.StateMember.Name, value); }
public virtual void Process <TRuntime> (IReadOnlyValueDescriptor <TRuntime> descriptor) where TRuntime : T { T runtime = descriptor.Get(); _callback(runtime); }
public void Process <T>(IReadOnlyValueDescriptor <T> descriptor) { T objectToSerialize = descriptor.Get(); var runtimeType = objectToSerialize.GetType(); BinaryStateMember member = descriptor.StateMember as BinaryStateMember; WriteAssemblyQualifiedNameIfNeeded(member, runtimeType); descriptor.Climb(); }
public void Process <T>(IReadOnlyValueDescriptor <T> descriptor) { var value = descriptor.Get(); _store.Set("Type", value.GetType().AssemblyQualifiedName); var temp = _store; _store = _store.GetInner(descriptor.StateMember.Name); descriptor.Climb(); _store = temp; }
public void ProcessCollection <T>(IReadOnlyValueDescriptor <ICollection <T> > descriptor) { int i = 0; var collection = descriptor.Get(); _store.Set(descriptor.StateMember.Name + ".Count", collection.Count); var temp = _store; foreach (var item in collection) { //_store = temp.GetInner("Item_" + i); descriptor.Route(new StaticStateMember(item, "Item_" + i), null, false); i++; } _store = temp; }
TRuntime IReadOnlyExactValueDescriptor <TRuntime> .Get() { IReadOnlyValueDescriptor <TRuntime> casted = this; return(casted.Get()); }
public void ProcessInt32(IReadOnlyValueDescriptor <int> descriptor) { WritePropertyName(descriptor); _writer.WriteValue(descriptor.Get()); EndWritePropertyName(); }
public void ProcessString(IReadOnlyValueDescriptor <string> descriptor) { WritePropertyName(descriptor); _writer.WriteValue(descriptor.Get()); EndWritePropertyName(); }