BTDB.EventStoreLayer.TypeSerializers.GetNewDescriptorSaver C# (CSharp) Метод

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

public GetNewDescriptorSaver ( ITypeDescriptor descriptor ) : IDescriptorSerializerLiteContext>.Action
descriptor ITypeDescriptor
Результат IDescriptorSerializerLiteContext>.Action
        public Action<object, IDescriptorSerializerLiteContext> GetNewDescriptorSaver(ITypeDescriptor descriptor)
        {
            return _newDescriptorSavers.GetOrAdd(descriptor, _newDescriptorSaverFactoryAction);
        }

Usage Example

Пример #1
0
            public IDescriptorSerializerContext StoreNewDescriptors(AbstractBufferedWriter writer, object obj)
            {
                if (obj == null)
                {
                    return(this);
                }
                InfoForType infoForType;
                var         iKnowDescriptor = obj as IKnowDescriptor;

                if (iKnowDescriptor != null)
                {
                    var descriptor = iKnowDescriptor.GetDescriptor();
                    if (!_typeOrDescriptor2InfoMap.TryGetValue(descriptor, out infoForType) &&
                        !_typeSerializersMapping._typeOrDescriptor2Info.TryGetValue(descriptor, out infoForType))
                    {
                        infoForType = new InfoForType {
                            Id = 0, Descriptor = descriptor
                        };
                    }
                }
                else
                {
                    var objType = obj.GetType();
                    if (!_typeOrDescriptor2InfoMap.TryGetValue(objType, out infoForType) &&
                        !_typeSerializersMapping._typeOrDescriptor2Info.TryGetValue(objType, out infoForType))
                    {
                        var descriptor = _typeSerializers.DescriptorOf(objType);
                        if (_typeOrDescriptor2InfoMap.TryGetValue(descriptor, out infoForType))
                        {
                            _typeOrDescriptor2InfoMap[objType] = infoForType;
                        }
                        else if (_typeSerializersMapping._typeOrDescriptor2Info.TryGetValue(descriptor, out infoForType))
                        {
                            _typeSerializersMapping._typeOrDescriptor2Info[objType] = infoForType;
                        }
                        else
                        {
                            infoForType = new InfoForType {
                                Id = 0, Descriptor = descriptor
                            };
                        }
                    }
                }
                if (infoForType.Id == 0)
                {
                    AddDescriptor(infoForType);
                }
                if (!infoForType.KnownNewTypeDiscoverer)
                {
                    infoForType.NewTypeDiscoverer      = _typeSerializers.GetNewDescriptorSaver(infoForType.Descriptor);
                    infoForType.KnownNewTypeDiscoverer = true;
                }
                var action = infoForType.NewTypeDiscoverer;

                if (action != null)
                {
                    action(obj, this);
                }
                return(this);
            }
All Usage Examples Of BTDB.EventStoreLayer.TypeSerializers::GetNewDescriptorSaver