private object[] Serialize(object entity)
        {
            var(schema, logicalCount, serializer) = injector.SetMatcher(entity);
            var values = new object[logicalCount];
            IWriterWithMetadata metadataWriter = writer;
            var recordContext = metadataWriter.GetMetadata();

            serializer(recordContext, entity, values);
            return(values);
        }
        public void TestTypeExtensionWithAttribute()
        {
            ExtensionNodeList nodes = AddinManager.GetExtensionNodes(typeof(IWriterWithMetadata));

            Assert.AreEqual(2, nodes.Count, "Node count");
            TypeExtensionNode <WriterWithMetadataAttribute> n1 = nodes [0] as TypeExtensionNode <WriterWithMetadataAttribute>;
            TypeExtensionNode <WriterWithMetadataAttribute> n2 = nodes [1] as TypeExtensionNode <WriterWithMetadataAttribute>;

            Assert.IsNotNull(n1);
            Assert.IsNotNull(n2);
            Assert.AreEqual("meta1", n1.Data.Name, "t1");
            Assert.AreEqual(1, n1.Data.Version, "t2");
            IWriterWithMetadata md = (IWriterWithMetadata)n1.CreateInstance();

            Assert.AreEqual("mt1", md.Write());
            Assert.AreEqual("meta2", n2.Data.Name, "t3");
            Assert.AreEqual(2, n2.Data.Version, "t4");
            md = (IWriterWithMetadata)n2.CreateInstance();
            Assert.AreEqual("mt2", md.Write());
        }
Exemple #3
0
 public TypedWriter(IWriterWithMetadata writer, IMapper <TEntity> mapper)
 {
     this.writer  = writer;
     serializer   = mapper.GetWriter();
     logicalCount = mapper.LogicalCount;
 }
 public MultiplexingTypedWriter(IWriterWithMetadata writer, ITypeMapperInjector injector)
 {
     this.writer   = writer;
     this.injector = injector;
 }