private static ByteString EncodeTuple(object value, Type type) { var encodedTuple = new KRPC.Schema.KRPC.Tuple(); var valueTypes = type.GetGenericArguments().ToArray(); var genericType = Type.GetType("System.Tuple`" + valueTypes.Length); var tupleType = genericType.MakeGenericType(valueTypes); for (int i = 0; i < valueTypes.Length; i++) { var property = tupleType.GetProperty("Item" + (i + 1)); var item = property.GetGetMethod().Invoke(value, null); encodedTuple.Items.Add(Encode(item, valueTypes [i])); } return(Encode(encodedTuple, typeof(KRPC.Schema.KRPC.Tuple))); }
static void WriteTuple(object value, Type type, Stream stream) { var encodedTuple = new KRPC.Schema.KRPC.Tuple(); var valueTypes = type.GetGenericArguments().ToArray(); var genericType = Type.GetType("System.Tuple`" + valueTypes.Length.ToString()); var tupleType = genericType.MakeGenericType(valueTypes); using (var internalBuffer = new MemoryStream()) { var internalStream = new CodedOutputStream(internalBuffer); for (int i = 0; i < valueTypes.Length; i++) { var property = tupleType.GetProperty("Item" + (i + 1).ToString()); var item = property.GetGetMethod().Invoke(value, null); encodedTuple.Items.Add(EncodeObject(item, valueTypes [i], internalBuffer, internalStream)); } } encodedTuple.WriteTo(stream); }
static void WriteTuple (object value, Type type, Stream stream) { var encodedTuple = new KRPC.Schema.KRPC.Tuple (); var valueTypes = type.GetGenericArguments ().ToArray (); var genericType = Type.GetType ("System.Tuple`" + valueTypes.Length.ToString ()); var tupleType = genericType.MakeGenericType (valueTypes); using (var internalBuffer = new MemoryStream ()) { var internalStream = new CodedOutputStream (internalBuffer); for (int i = 0; i < valueTypes.Length; i++) { var property = tupleType.GetProperty ("Item" + (i + 1).ToString ()); var item = property.GetGetMethod ().Invoke (value, null); encodedTuple.Items.Add (EncodeObject (item, valueTypes [i], internalBuffer, internalStream)); } } encodedTuple.WriteTo (stream); }
private static ByteString EncodeTuple(object value, Type type) { var encodedTuple = new KRPC.Schema.KRPC.Tuple (); var valueTypes = type.GetGenericArguments ().ToArray (); var genericType = Type.GetType ("System.Tuple`" + valueTypes.Length); var tupleType = genericType.MakeGenericType (valueTypes); for (int i = 0; i < valueTypes.Length; i++) { var property = tupleType.GetProperty ("Item" + (i + 1)); var item = property.GetGetMethod ().Invoke (value, null); encodedTuple.Items.Add (Encode (item, valueTypes [i])); } return Encode (encodedTuple, typeof(KRPC.Schema.KRPC.Tuple)); }