示例#1
0
        public uint ExportSize(object v, Type objType)
        {
            uint         nExportSize = 8;
            uint         nLen        = 0;
            CUniStructCS ccs         = new CUniStructCS();

            if (v != null)
            {
                for (uint i = 0; i < ((Array)v).Length; i++)
                {
                    object obj = ((Array)v).GetValue(i);
                    if (obj == null)
                    {
                        continue;
                    }
                    nExportSize += ccs.ExportSize(obj, true, objType.GetElementType());
                    nLen++;
                }
                return(nExportSize);
            }
            else
            {
                return(0);
            }
        }
示例#2
0
        public byte[] Export(object v, Type objType)
        {
            uint nExportSize = 8;
            uint nDindex     = 0;

            byte[]       retBytes = null;
            uint         nLen     = 0;
            CUniStructCS ccs      = new CUniStructCS();

            if (v != null)
            {
                for (uint i = 0; i < ((Array)v).Length; i++)
                {
                    object obj = ((Array)v).GetValue(i);
                    if (obj == null)
                    {
                        continue;
                    }
                    nExportSize += ccs.ExportSize(obj, true, objType.GetElementType());
                    nLen++;
                }
            }
            else
            {
                return(new byte[0]);
            }
            retBytes = new byte[nExportSize];
            CUniStructCS.uint2byte((uint)UNISMAG.UNISARRAY, ref retBytes, nDindex);
            nDindex += 4;
            CUniStructCS.uint2byte((uint)nLen, ref retBytes, nDindex);
            nDindex += 4;
            if (v != null)
            {
                for (uint i = 0; i < ((Array)v).Length; i++)
                {
                    object obj = ((Array)v).GetValue(i);
                    if (obj == null)
                    {
                        continue;
                    }
                    uint nSize = ccs.Export(obj, true, ref retBytes, nDindex, objType.GetElementType());
                    nDindex += nSize;
                }
            }
            return(retBytes);
        }
示例#3
0
        public uint ExportSize <T>(T[] v) where T : new()
        {
            uint         nExportSize = 8;
            uint         nLen        = 0;
            CUniStructCS ccs         = new CUniStructCS();

            if (v != null)
            {
                for (uint i = 0; i < v.Length; i++)
                {
                    if (v[i] == null)
                    {
                        continue;
                    }
                    nExportSize += ccs.ExportSize(v[i]);
                    nLen++;
                }
                return(nExportSize);
            }
            else
            {
                return(0);
            }
        }