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; }
protected override void SetUp() { cache = new ValuesCache(); }