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())); } }
internal FlatFileItemWriter(IPropertyValueSerializer serializer, IFileWriterService fileService) { _serializer = serializer; _fileService = fileService; }
public void RegisterSerializer <T>(IPropertyValueSerializer serializer) { throw new NotImplementedException(); }