BTDB.EventStore2Layer.EventSerializer.StoreObject C# (CSharp) Метод

StoreObject() публичный Метод

public StoreObject ( object obj ) : void
obj object
Результат void
        public void StoreObject(object obj)
        {
            if (_newTypeFound) return;
            if (obj == null)
            {
                _writer.WriteUInt8(0);
                return;
            }
            var visited = _visited;
            for (int i = 0; i < visited.Count; i++)
            {
                if (visited[i] != obj) continue;
                _writer.WriteUInt8(1); // backreference
                _writer.WriteVUInt32((uint)i);
                return;
            }
            visited.Add(obj);
            SerializerTypeInfo info;
            if (!_typeOrDescriptor2Info.TryGetValue(obj.GetType(), out info))
            {
                var knowDescriptor = obj as IKnowDescriptor;
                if (knowDescriptor != null)
                {
                    if (!_typeOrDescriptor2Info.TryGetValue(knowDescriptor.GetDescriptor(), out info))
                    {
                        _newTypeFound = true;
                        return;
                    }
                }
                else
                {
                    _newTypeFound = true;
                    return;
                }
            }
            if (info.ComplexSaver == null) info.ComplexSaver = BuildComplexSaver(info.Descriptor);
            _writer.WriteVUInt32((uint)info.Id);
            info.ComplexSaver(_writer, this, obj);
        }