示例#1
0
        public Slice GetSliceFromMemberInfo(MemberInfo memberInfo, object value, bool lookupIndex)
        {
            using (var ms = new MemoryStream())
                using (var writer = new BinaryWriter(ms))
                {
                    IPropertyValueSerializer serializer = null;

                    if (lookupIndex)
                    {
                        if (_indexInfo.IndexAttributeMap.ContainsKey(memberInfo))
                        {
                            var idxInfo = _indexInfo.IndexAttributeMap[memberInfo][0];
                            serializer = idxInfo.Serializer;
                            if (serializer != null)
                            {
                                writer.Write(this.GetIndexKeyPrefixSlice(idxInfo).ToByteArray(deepCopy: false));
                            }
                        }
                    }
                    else
                    {
                        var keyTuple = _idMembers.FirstOrDefault(t => Equals(t.Item1, memberInfo));
                        serializer = keyTuple?.Item2.Serializer;
                        if (serializer != null)
                        {
                            writer.Write(this.GetKeyPrefixSlice().ToByteArray(deepCopy: false));
                        }
                    }

                    if (serializer == null)
                    {
                        throw new InvalidOperationException("Serializer for filed " + memberInfo.Name + " is null");
                    }

                    if (value != null)
                    {
                        var serializedBytes = serializer.Serialize(value);
                        this.VerifySerializedBytes(serializedBytes);
                        writer.Write(serializedBytes);
                    }

                    writer.Flush();

                    return(Slice.FromByteArray(ms.ToArray()));
                }
        }
示例#2
0
 internal FlatFileItemWriter(IPropertyValueSerializer serializer, IFileWriterService fileService)
 {
     _serializer  = serializer;
     _fileService = fileService;
 }
示例#3
0
 public void RegisterSerializer <T>(IPropertyValueSerializer serializer)
 {
     throw new NotImplementedException();
 }