示例#1
0
    public void SerializeArray <_Ty>(ref _Ty[] aValue, SerializeArrayNode <_Ty> serializeFunc)
    {
        int nLen = 0;

        if (IsLoading())
        {
            Read(ref nLen);
            if (nLen < 0 || nLen > 1024 * 1024)
            {
                nLen = 0;
            }
            if (nLen <= 0)
            {
                aValue = new _Ty[0];
            }
            else
            {
                aValue = new _Ty[nLen];
            }
        }
        else
        {
            nLen = aValue != null ? aValue.Length : 0;
            Write(nLen);
        }
        for (int i = 0; i < nLen; ++i)
        {
            serializeFunc(this, ref aValue[i]);
        }
    }
示例#2
0
    public void SerializeArray <_Ty>(ref List <_Ty> aValue, SerializeArrayNode <_Ty> serializeFunc) where _Ty : new()
    {
        if (aValue == null)
        {
            aValue = new List <_Ty>();
        }

        int nLen = 0;

        if (IsLoading())
        {
            Read(ref nLen);
            if (nLen < 0 || nLen > 1024 * 1024)
            {
                nLen = 0;
            }
            aValue.Clear();
            for (int i = 0; i < nLen; ++i)
            {
                _Ty value = new _Ty();
                serializeFunc(this, ref value);
                if (value != null)
                {
                    aValue.Add(value);
                }
            }
        }
        else
        {
            nLen = aValue != null ? aValue.Count : 0;
            Write(nLen);
            for (int i = 0; i < nLen; ++i)
            {
                _Ty value = aValue[i];
                serializeFunc(this, ref value);
            }
        }
    }