private void SetData(object dat) { if (dat == null) { _SetData(null); return; } if (dat is Array) { using (RRBaseArray rb = MessageElementDataUtil.ArrayToRRBaseArray((Array)dat)) { _SetData(rb); } return; } if (dat is string) { using (RRBaseArray rb = MessageElementDataUtil.stringToRRBaseArray((string)dat)) { _SetData(rb); } return; } if (dat is MessageElementData) { _SetData((MessageElementData)dat); return; } string datatype = datatype = RobotRaconteurNode.GetTypeString(dat.GetType()); DataTypes elementtype = DataTypeUtil.TypeIDFromString(datatype); if (elementtype != DataTypes.void_t && (elementtype < DataTypes.uint64_t || elementtype == DataTypes.bool_t) && !(dat is Array)) { object dat2 = DataTypeUtil.ArrayFromScalar(dat); using (RRBaseArray rb = MessageElementDataUtil.ArrayToRRBaseArray((Array)dat2)) { _SetData(rb); } return; } throw new DataTypeException("Invalid MessageElement data type"); }