private Variant ToPrimitives(List <DirtyInfo> info) { var vm = GlobalPool <VariantMap> .GetObject(); var result = Variant.Get(vm); vm.IsArray = true; vm.ArrayLength = info.Count; for (var i = 0; i < vm.ArrayLength; i++) { var primitive = Variant.GetMap(new VariantMapHelper { { Defines.RM_SHAREDOBJECTPRIMITIVE_TYPE, info[i].Type } }); switch (info[i].Type) { case Defines.SOT_SC_UPDATE_DATA_ACK: case Defines.SOT_SC_DELETE_DATA: primitive[Defines.RM_SHAREDOBJECTPRIMITIVE_PAYLOAD] = Variant.GetList(info[i].PropertyName); break; case Defines.SOT_SC_UPDATE_DATA: primitive[Defines.RM_SHAREDOBJECTPRIMITIVE_PAYLOAD] = Variant.GetMap(new VariantMapHelper { { info[i].PropertyName, Payload[info[i].PropertyName].Clone() } }); break; case Defines.SOT_SC_INITIAL_DATA: case Defines.SOT_SC_CLEAR_DATA: break; default: Logger.ASSERT("Unable to handle primitive type:{0}", info[i].Type); break; } vm[VariantMap.GetIndexString(i)] = primitive; } return(result); }