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

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

public StoreNewDescriptors ( object obj ) : void
obj object
Результат void
        public void StoreNewDescriptors(object obj)
        {
            if (obj == null) return;
            for (var i = 0; i < _visited.Count; i++)
            {
                if (_visited[i] == obj) return;
            }
            _visited.Add(obj);
            SerializerTypeInfo info;
            var knowDescriptor = obj as IKnowDescriptor;
            if (knowDescriptor != null)
            {
                var origDesc = knowDescriptor.GetDescriptor();
                if (!_typeOrDescriptor2Info.TryGetValue(origDesc, out info))
                {
                    var newDesc = MergeDescriptor(origDesc);
                    if (!_typeOrDescriptor2Info.TryGetValue(newDesc, out info))
                    {
                        info = new SerializerTypeInfo
                        {
                            Id = 0,
                            Descriptor = newDesc
                        };
                    }
                    _typeOrDescriptor2InfoNew[origDesc] = info;
                }
            }
            else
            {
                if (!_typeOrDescriptor2Info.TryGetValue(obj.GetType(), out info))
                {
                    var desc = Create(obj.GetType());
                    info = _typeOrDescriptor2InfoNew[desc];
                }
            }
            if (info.NestedObjGatherer == null)
            {
                info.NestedObjGatherer = BuildNestedObjGatherer(info.Descriptor, knowDescriptor == null ? obj.GetType() : null);
            }
            info.NestedObjGatherer(obj, this);
        }