예제 #1
0
            public void SetObjectData(UnitySerializationInfo info)
            {
                var cnt = info.GetInt32("count");

                _elementType = TypeUtil.ParseType(info.GetString("assembly"), info.GetString("type"));
                _isArray     = info.GetBoolean("isArray");

                if (_isArray)
                {
                    var arr = System.Array.CreateInstance(_elementType, cnt);
                    for (int i = 0; i < cnt; i++)
                    {
                        arr.SetValue(info.GetValue("element" + i.ToString(), _elementType), i);
                    }
                    _lst = arr as System.Collections.IList;
                }
                else
                {
                    var lstType    = typeof(List <>);
                    var genLstType = lstType.MakeGenericType(_elementType);
                    var lst        = System.Activator.CreateInstance(genLstType) as System.Collections.IList;
                    for (int i = 0; i < cnt; i++)
                    {
                        lst.Add(info.GetValue("element" + i.ToString(), _elementType));
                    }
                    _lst = lst;
                }
            }
예제 #2
0
            public void GetObjectData(UnitySerializationInfo info)
            {
                int cnt = (_lst != null) ? _lst.Count : 0;

                info.AddValue("count", cnt);
                info.AddValue("assembly", _elementType.Assembly.GetName().Name);
                info.AddValue("type", _elementType.FullName);
                info.AddValue("isArray", _isArray);

                for (int i = 0; i < cnt; i++)
                {
                    info.AddValue("element" + i.ToString(), _lst[i], _elementType);
                }
            }