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); } }
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); }
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); } }