public IObjectWriter Create()
        {
            var valueWriterConduit = new ValueWriterConduit();

            IValuesCache valuesCache = new ValuesCache();
            IMemberWriter memberWriter = new MemberWriter(document, valueWriterConduit);

            var objectWriter = new ValueWriter(document,
                                               new IObjectWriter[]
                                                   {
                                                       new NotSupportedTypesWriter(),
                                                       new NullValueWriter(document),
                                                       new ObjectReferenceWriter(document, valuesCache),
                                                       new AppObjectWriter(document, repository,
                                                                           valuesCache, typeNamesCache),
                                                       new ListWriter(typeof (List<>), document,
                                                                      valuesCache, valueWriterConduit,
                                                                      typeNamesCache),
                                                       new DictionaryWriter(document, valuesCache,
                                                                            valueWriterConduit, typeNamesCache),
                                                       new ArrayOfDoublesXmlWriter(document, valuesCache,
                                                                                   typeNamesCache),
                                                       new ArrayOfObjectsWriter(document, valuesCache,
                                                                                valueWriterConduit,
                                                                                typeNamesCache),
                                                       new EnumXmlWriter(document, typeNamesCache),
                                                       new CustomTypeXmlWriter<Int32>(document, "Int32"),
                                                       new CustomTypeXmlWriter<Int64>(document, "Int64"),
                                                       new CustomTypeXmlWriter<UInt32>(document, "UInt32"),
                                                       new CustomTypeXmlWriter<UInt64>(document, "UInt64"),
                                                       new DoubleXmlWriter(document),
                                                       new CustomTypeXmlWriter<Single>(document, "single"),
                                                       new CustomTypeXmlWriter<String>(document, "string"),
                                                       new CustomTypeXmlWriter<Boolean>(document, "bool"),
                                                       new CustomTypeXmlWriter<Char>(document, "char"),
                                                       new CustomTypeXmlWriter<Guid>(document, "guid"),
                                                       new CustomTypeXmlWriter<TimeSpan>(document, "timespan"),
                                                       new CustomTypeXmlWriter<DateTime>(document, "datetime"),
                                                       new CustomTypeXmlWriter<Version>(document, "version"),
                                                       new PrimitiveValueTypeXmlWriter(document),
                                                       new ValueTypeWriter(document, memberWriter,
                                                                           typeNamesCache),
                                                       new ListWriter(typeof (BindingList<>), document,
                                                                      valuesCache,
                                                                      valueWriterConduit, typeNamesCache),
                                                       new ListWriter(typeof (ArrayList), document,
                                                                      valuesCache,
                                                                      valueWriterConduit, typeNamesCache),
                                                       new MetaDataTypeNameWriter(document),
                                                       new ClassWriter(document, valuesCache, memberWriter,
                                                                       valueWriterConduit, typeNamesCache)
                                                   },
                                               new IBaseTypeMembersWriter[]
                                                   {
                                                       new ListWriter(typeof (List<>), document,
                                                                      valuesCache, valueWriterConduit,
                                                                      typeNamesCache),
                                                       new DictionaryWriter(document, valuesCache,
                                                                            valueWriterConduit, typeNamesCache),
                                                       new ListWriter(typeof (ArrayList), document,
                                                                      valuesCache, valueWriterConduit,
                                                                      typeNamesCache),
                                                       new ListWriter(typeof (BindingList<>), document,
                                                                      valuesCache, valueWriterConduit,
                                                                      typeNamesCache),
                                                       new ClassBaseWriter(document, memberWriter,
                                                                           valueWriterConduit, typeNamesCache)
                                                   });

            valueWriterConduit.SetTarget(objectWriter, objectWriter);

            return objectWriter;
        }
Example #2
0
 protected override void SetUp()
 {
     cache = new ValuesCache();
 }