public NSMutableDictionary setFromDict(Dictionary <string, object> value) { foreach (var kv in value) { var ocValue = UnknownValue.CsToOc(kv.Value); if (ocValue != null) { setValueForKey(kv.Key, ocValue); } } return(this); }
public static Value[] getInitializedArray(int arraySize, MethodDefinition method, ref int newarrIndex, Code stelemOpCode) { var resultValueArray = new Value[arraySize]; var emulator = new InstructionEmulator(method); var theArray = new UnknownValue(); emulator.push(theArray); var instructions = method.Body.Instructions; int i; for (i = newarrIndex + 1; i < instructions.Count; i++) { var instr = instructions[i]; if (instr.OpCode.FlowControl != FlowControl.Next) { break; } if (instr.OpCode.Code == Code.Newarr) { break; } switch (instr.OpCode.Code) { case Code.Newarr: case Code.Newobj: goto done; case Code.Stloc: case Code.Stloc_S: case Code.Stloc_0: case Code.Stloc_1: case Code.Stloc_2: case Code.Stloc_3: case Code.Starg: case Code.Starg_S: case Code.Stsfld: case Code.Stfld: if (emulator.peek() == theArray && i != newarrIndex + 1 && i != newarrIndex + 2) { goto done; } break; } if (instr.OpCode.Code == stelemOpCode) { var value = emulator.pop(); var index = emulator.pop() as Int32Value; var array = emulator.pop(); if (ReferenceEquals(array, theArray) && index != null && index.allBitsValid()) { if (0 <= index.value && index.value < resultValueArray.Length) { resultValueArray[index.value] = value; } } } else { emulator.emulate(instr); } } done: if (i != newarrIndex + 1) { i--; } newarrIndex = i; return(resultValueArray); }
internal override void SetValue(object value) { this.Value = (UnknownValue)value; }