private object SetList(string typeName, int count, byte[] inputBytes, int startOffset)
        {
            var listType = RpcSerializerUtil.GetType(typeName);

            if (listType.DeclaringType != null && listType.DeclaringType == typeof(Enumerable))
            {
                var list = new List <int>();
                if (count > 0)
                {
                    for (int i = 0; i < count; i++)
                    {
                        var value = SerializerFactory.Deserializer(inputBytes, startOffset, out int nextStartOffset);
                        startOffset = nextStartOffset;
                        list.Add((int)value);
                    }
                }
                return(list);
            }
            else
            {
                var list = Activator.CreateInstance(listType);
                if (count > 0)
                {
                    for (int i = 0; i < count; i++)
                    {
                        var value = SerializerFactory.Deserializer(inputBytes, startOffset, out int nextStartOffset);
                        startOffset = nextStartOffset;
                        listType.InvokeMember("Add", BindingFlags.InvokeMethod, null, list, new object[] { value });
                    }
                }
                return(list);
            }
        }
Exemplo n.º 2
0
        public override object GetObject(byte[] inputBytes, int startOffset, out int nextStartOffset)
        {
            var enumTypeName = ByteUtil.DecodeString(inputBytes, startOffset, out nextStartOffset);

            startOffset = nextStartOffset;
            var enumValue = ByteUtil.DecodeInt(inputBytes, startOffset, out nextStartOffset);
            var type      = RpcSerializerUtil.GetType(enumTypeName);

            return(Enum.ToObject(type, enumValue));
        }
Exemplo n.º 3
0
 private Array GetArray(string typeName, int length)
 {
     try
     {
         var type = RpcSerializerUtil.GetType(typeName);
         return(Array.CreateInstance(type, length));
     }
     catch
     {
         return(new object[length]);
     }
 }
 private IDictionary CreateDic(string typeName, int length)
 {
     try
     {
         var type = RpcSerializerUtil.GetType(typeName);
         return((IDictionary)Activator.CreateInstance(type));
     }
     catch
     {
         return(new Dictionary <Object, Object>());
     }
 }
Exemplo n.º 5
0
        public override object GetObject(byte[] inputBytes, int startOffset, out int nextStartOffset)
        {
            var objectByteData = ByteUtil.DecodeBytes(inputBytes, startOffset, out nextStartOffset);

            if (objectByteData.Length > 0)
            {
                var typeName = ByteUtil.DecodeString(objectByteData, 0, out int objDataStartOffset);
                var type     = RpcSerializerUtil.GetType(typeName);
                var result   = RpcSerializerUtil.CreateInstance(type);
                int objDataFieldStartOffset = objDataStartOffset;
                SetObjectField(type.GetRpcFieldList(), result, objectByteData, objDataFieldStartOffset, objectByteData.Length, out objDataStartOffset);
                return(result);
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 6
0
        public override object GetObject(byte[] inputBytes, int startOffset, out int nextStartOffset)
        {
            var objectByteData = ByteUtil.DecodeBytes(inputBytes, startOffset, out nextStartOffset);

            if (objectByteData.Length > 0)
            {
                var tableName       = ByteUtil.DecodeString(objectByteData, 0, out int tableNextStartOffset);
                var tabeOffsetIndex = tableNextStartOffset;
                var table           = new DataTable(tableName);
                var columnCount     = ByteUtil.DecodeInt(objectByteData, tabeOffsetIndex, out tableNextStartOffset);
                tabeOffsetIndex = tableNextStartOffset;
                for (int i = 0; i < columnCount; i++)
                {
                    var columnName = ByteUtil.DecodeString(objectByteData, tabeOffsetIndex, out tableNextStartOffset);
                    tabeOffsetIndex = tableNextStartOffset;
                    var columnTypeName = ByteUtil.DecodeString(objectByteData, tabeOffsetIndex, out tableNextStartOffset);
                    tabeOffsetIndex = tableNextStartOffset;
                    var type = RpcSerializerUtil.GetType(columnTypeName);
                    table.Columns.Add(columnName, type);
                }
                var rowCount = ByteUtil.DecodeInt(objectByteData, tabeOffsetIndex, out tableNextStartOffset);
                tabeOffsetIndex = tableNextStartOffset;
                for (int i = 0; i < rowCount; i++)
                {
                    DataRow row = table.NewRow();
                    for (int j = 0; j < columnCount; j++)
                    {
                        row[j]          = SerializerFactory.Deserializer(objectByteData, tabeOffsetIndex, out tableNextStartOffset);
                        tabeOffsetIndex = tableNextStartOffset;
                    }
                    table.Rows.Add(row);
                }
                return(table);
            }
            else
            {
                return(null);
            }
        }