public RecordPerRowReferenceCollectionFieldWriter(
     RecordPerRowFieldSerializer parent,
     string fieldName,
     IReferenceRecordSerializer <TField> serializer) : base(parent, fieldName)
 {
     _serializer = serializer;
 }
示例#2
0
        protected RecordPerRowFieldSerializer(
            RecordPerRowFieldSerializer parent,
            string fieldName)
        {
            _writersCache  = new List <object>();
            _currentWriter = 0;

            _stream         = parent._stream;
            _writersFactory = parent._writersFactory;
            _fieldNamespace = parent._fieldNamespace.SubName(fieldName);
        }
 public RecordPerRowReferenceCollectionFieldSerializer(RecordPerRowFieldSerializer parent)
 {
     _parent = parent;
 }
        public ICollectionFieldSerializer <TField> BuildCollectionFieldSerializer <TField>(RecordPerRowFieldSerializer parent)
        {
            Type fieldType = typeof(TField);
            Type collectionFieldSerializerType;

            if (fieldType.IsValueType)
            {
                collectionFieldSerializerType = typeof(RecordPerRowValueCollectionFieldSerializer <>)
                                                .MakeGenericType(fieldType);
            }
            else
            {
                collectionFieldSerializerType = typeof(RecordPerRowReferenceCollectionFieldSerializer <>)
                                                .MakeGenericType(fieldType);
            }

            object result = Activator.CreateInstance(collectionFieldSerializerType, parent) ?? throw new InvalidOperationException("CreateInstance returned null");

            return((ICollectionFieldSerializer <TField>)result);
        }