11 |
12 |
13 | Indices and tables
14 | ==================
15 |
16 | * :ref:`genindex`
17 | * :ref:`modindex`
18 | * :ref:`search`
19 |
--------------------------------------------------------------------------------
/documentation/.gitignore:
--------------------------------------------------------------------------------
1 | ###############
2 | # folder #
3 | ###############
4 | /**/DROP/
5 | /**/TEMP/
6 | /**/packages/
7 | /**/bin/
8 | /**/obj/
9 | .build
10 | _site
11 | log.txt
12 |
--------------------------------------------------------------------------------
/documentation/conceptual/toc.yml:
--------------------------------------------------------------------------------
1 | - name: Introduction
2 | href: index.md
3 | - name: FAQs
4 | href: documents/FAQs.md
5 | - name: The Basics
6 | href: documents/The-Basics.md
7 | - name: Features
8 | href: documents/Features.md
9 | - name: API Overview
10 | href: documents/API-Overview.md
11 | - name: Example Scenarios
12 | href: documents/Example-Scenarios.md
--------------------------------------------------------------------------------
/documentation/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExtendedXmlSerializer/home/b46e8b34e124ef960c97292983653df5c5cf8f55/documentation/logo.png
--------------------------------------------------------------------------------
/documentation/reference/.gitignore:
--------------------------------------------------------------------------------
1 | ###############
2 | # temp file #
3 | ###############
4 | *.yml
5 | .manifest
6 |
--------------------------------------------------------------------------------
/documentation/reference/index.md:
--------------------------------------------------------------------------------
1 | # ExtendedXmlSerializer API Reference
2 |
3 | Welcome to the API Reference documentation. Here you will find all documented classes from code defined within the ExtendedXmlSerializer project.
4 |
5 | Start by visiting a topic within the Table of Contents.
6 |
7 | If you are unsure of a topic to start with, we recommend visiting the `ConfigurationContainer` ([link](/reference/ExtendedXmlSerializer.Configuration.ConfigurationContainer.html)) as that is where all the fun starts. 👍
--------------------------------------------------------------------------------
/documentation/templates/default/ManagedReference.html.primary.tmpl:
--------------------------------------------------------------------------------
1 | {{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
2 | {{!master(layout/_master.tmpl)}}
3 |
4 | {{#isNamespace}}
5 | {{>partials/namespace}}
6 | {{/isNamespace}}
7 | {{#isClass}}
8 | {{>partials/class}}
9 | {{/isClass}}
10 | {{#isEnum}}
11 | {{>partials/enum}}
12 | {{/isEnum}}
13 | {{>partials/customMREFContent}}
--------------------------------------------------------------------------------
/documentation/templates/default/RestApi.html.primary.tmpl:
--------------------------------------------------------------------------------
1 | {{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
2 | {{!master(layout/_master.tmpl)}}
3 | {{>partials/rest}}
--------------------------------------------------------------------------------
/documentation/templates/default/UniversalReference.html.primary.tmpl:
--------------------------------------------------------------------------------
1 | {{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
2 | {{!master(layout/_master.tmpl)}}
3 |
4 | {{#isNamespace}}
5 | {{>partials/uref/namespace}}
6 | {{/isNamespace}}
7 | {{#isClass}}
8 | {{>partials/uref/class}}
9 | {{/isClass}}
10 | {{#isEnum}}
11 | {{>partials/enum}}
12 | {{/isEnum}}
13 |
--------------------------------------------------------------------------------
/documentation/templates/default/conceptual.html.primary.tmpl:
--------------------------------------------------------------------------------
1 | {{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
2 | {{!master(layout/_master.tmpl)}}
3 | {{{rawTitle}}}
4 | {{{conceptual}}}
--------------------------------------------------------------------------------
/documentation/templates/default/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExtendedXmlSerializer/home/b46e8b34e124ef960c97292983653df5c5cf8f55/documentation/templates/default/favicon.ico
--------------------------------------------------------------------------------
/documentation/templates/default/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExtendedXmlSerializer/home/b46e8b34e124ef960c97292983653df5c5cf8f55/documentation/templates/default/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/documentation/templates/default/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExtendedXmlSerializer/home/b46e8b34e124ef960c97292983653df5c5cf8f55/documentation/templates/default/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/documentation/templates/default/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExtendedXmlSerializer/home/b46e8b34e124ef960c97292983653df5c5cf8f55/documentation/templates/default/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/documentation/templates/default/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExtendedXmlSerializer/home/b46e8b34e124ef960c97292983653df5c5cf8f55/documentation/templates/default/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/documentation/templates/default/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExtendedXmlSerializer/home/b46e8b34e124ef960c97292983653df5c5cf8f55/documentation/templates/default/logo.png
--------------------------------------------------------------------------------
/documentation/templates/default/partials/_breadcrumb.liquid:
--------------------------------------------------------------------------------
1 | {% comment -%}Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.{% endcomment -%}
2 |
9 |
--------------------------------------------------------------------------------
/documentation/templates/default/partials/_scripts.liquid:
--------------------------------------------------------------------------------
1 | {% comment -%}Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.{% endcomment -%}
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/documentation/templates/default/partials/breadcrumb.tmpl.partial:
--------------------------------------------------------------------------------
1 | {{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
2 |
3 |
10 |
--------------------------------------------------------------------------------
/documentation/templates/default/partials/customMREFContent.tmpl.partial:
--------------------------------------------------------------------------------
1 | {{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
2 | {{!Add your own custom template for the content for ManagedReference here}}
--------------------------------------------------------------------------------
/documentation/templates/default/partials/dd-li.tmpl.partial:
--------------------------------------------------------------------------------
1 | {{#items}}
2 | {{name}}
3 | {{/items}}
4 |
--------------------------------------------------------------------------------
/documentation/templates/default/partials/logo.tmpl.partial:
--------------------------------------------------------------------------------
1 | {{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/documentation/templates/default/partials/scripts.tmpl.partial:
--------------------------------------------------------------------------------
1 | {{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/documentation/templates/default/partials/searchResults.tmpl.partial:
--------------------------------------------------------------------------------
1 | {{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
2 |
3 |
10 |
--------------------------------------------------------------------------------
/documentation/templates/default/partials/uref/inheritance.tmpl.partial:
--------------------------------------------------------------------------------
1 | {{#inheritance}}
2 | {{>partials/uref/inheritance}}
3 | {{/inheritance}}
4 | {{{type.specName.0.value}}}
5 |
--------------------------------------------------------------------------------
/documentation/toc.yml:
--------------------------------------------------------------------------------
1 | - name: Api Reference Documentation
2 | href: reference/
3 | homepage: reference/index.md
4 | - name: Concepts and Topics
5 | href: conceptual/
6 | - name: Releases
7 | href: https://github.com/ExtendedXmlSerializer/home/releases
8 | - name: CHANGELOG
9 | href: https://github.com/ExtendedXmlSerializer/home/blob/master/CHANGELOG.md
10 |
--------------------------------------------------------------------------------
/samples/ExtendedXmlSerializer.Samples/Dictianary/TestClass.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace ExtendedXmlSerializer.Samples.Dictianary
4 | {
5 | // TestClass
6 |
7 | public class TestClass
8 | {
9 | public Dictionary Dictionary { get; set; }
10 | }
11 | // EndTestClass
12 | }
13 |
--------------------------------------------------------------------------------
/samples/ExtendedXmlSerializer.Samples/FluentApi/Car.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Samples.FluentApi
2 | {
3 | public class Car
4 | {
5 | public string Brand { get; set; }
6 | public string Model { get; set; }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/samples/ExtendedXmlSerializer.Samples/Introduction/Run.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core;
2 |
3 | namespace ExtendedXmlSerializer.Samples.Introduction
4 | {
5 | public sealed class Run : ICommand
6 | {
7 | public static Run Default { get; } = new Run();
8 | Run() {}
9 |
10 | public void Execute(object parameter)
11 | {
12 | Create.Default.Execute(null);
13 | Type.Default.Execute(null);
14 | Member.Default.Execute(null);
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/samples/ExtendedXmlSerializer.Samples/Introduction/Subject.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Samples.Introduction
2 | {
3 | // Subject
4 | public sealed class Subject
5 | {
6 | public string Message { get; set; }
7 |
8 | public int Count { get; set; }
9 | }
10 | // EndSubject
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Configuration/IConfigurationProfile.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.Configuration
4 | {
5 | ///
6 | /// Used as a mechanism to encapsulate a set of pre-determined configurations to apply to a provided container.
7 | ///
8 | public interface IConfigurationProfile : IAlteration {}
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Configuration/IEmitBehavior.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.Configuration
4 | {
5 | ///
6 | /// A specialized configuration component that is intended to alter the way the serializer emits content.
7 | ///
8 | public interface IEmitBehavior : IAlteration {}
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Configuration/IInternalMemberConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Configuration
2 | {
3 | interface IInternalMemberConfiguration
4 | {
5 | IMemberConfiguration Name(string name);
6 |
7 | IMemberConfiguration Order(int order);
8 | }
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Configuration/IInternalTypeConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 |
3 | namespace ExtendedXmlSerializer.Configuration
4 | {
5 | interface IInternalTypeConfiguration
6 | {
7 | ITypeConfiguration Name(string name);
8 |
9 | IMemberConfiguration Member(MemberInfo member);
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Configuration/IServicesFactory.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 | using ExtendedXmlSerializer.ExtensionModel;
3 |
4 | namespace ExtendedXmlSerializer.Configuration
5 | {
6 | interface IServicesFactory : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Configuration/ITypeConfigurationContext.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 | using System.Reflection;
3 |
4 | namespace ExtendedXmlSerializer.Configuration
5 | {
6 | ///
7 | /// This is considered internal code and not to be used by external applications.
8 | ///
9 | public interface ITypeConfigurationContext : IContext, ISource {}
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Configuration/MemberConfigurationExtensions.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Configuration
2 | {
3 | static class MemberConfigurationExtensions
4 | {
5 | public static IInternalMemberConfiguration AsInternal(this IMemberConfiguration @this)
6 | {
7 | return (IInternalMemberConfiguration)@this;
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Configuration/TypeConfigurationExtensions.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Configuration
2 | {
3 | static class TypeConfigurationExtensions
4 | {
5 | public static IInternalTypeConfiguration AsInternal(this ITypeConfiguration @this)
6 | => (IInternalTypeConfiguration)@this;
7 | }
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Configuration/TypeProperty.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Reflection;
3 | using ExtendedXmlSerializer.ReflectionModel;
4 |
5 | namespace ExtendedXmlSerializer.Configuration
6 | {
7 | class TypeProperty : MemberPropertyBase
8 | {
9 | public TypeProperty(IDictionary store, TypeInfo type) : this(new TypedTable(store), type) {}
10 |
11 | public TypeProperty(ITypedTable table, TypeInfo type) : base(table, type) {}
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Collections/ArraySpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ReflectionModel;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Collections
4 | {
5 | sealed class ArraySpecification : CollectionSpecification
6 | {
7 | public static ArraySpecification Default { get; } = new ArraySpecification();
8 |
9 | ArraySpecification() : base(IsArraySpecification.Default) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Collections/Arrays.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Collections
2 | {
3 | sealed class Arrays : Collections
4 | {
5 | public Arrays(RuntimeSerializers serializers, ArrayContents contents) : base(serializers, contents) {}
6 | }
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Collections/CollectionAssignment.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Collections
2 | {
3 | sealed class CollectionAssignment : ICollectionAssignment
4 | {
5 | public static CollectionAssignment Default { get; } = new CollectionAssignment();
6 |
7 | CollectionAssignment() {}
8 |
9 | public void Assign(IListInnerContent contents, object item) => contents.List.Add(item);
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Collections/CollectionSpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Specifications;
2 | using ExtendedXmlSerializer.ReflectionModel;
3 | using System.Reflection;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Collections
6 | {
7 | class CollectionSpecification : DecoratedSpecification
8 | {
9 | protected CollectionSpecification(ISpecification specification)
10 | : base(IsCollectionTypeSpecification.Default.And(specification)) {}
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Collections/DefaultCollectionSpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ReflectionModel;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Collections
4 | {
5 | sealed class DefaultCollectionSpecification : CollectionSpecification
6 | {
7 | public DefaultCollectionSpecification(IActivatingTypeSpecification specification) : base(specification) {}
8 | }
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Collections/DefaultCollections.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Collections
2 | {
3 | sealed class DefaultCollections : Collections
4 | {
5 | public DefaultCollections(RuntimeSerializers serializers, CollectionContents contents)
6 | : base(serializers, contents) {}
7 | }
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Collections/DictionaryContextOption.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ExtendedXmlSerializer/home/b46e8b34e124ef960c97292983653df5c5cf8f55/src/ExtendedXmlSerializer/ContentModel/Collections/DictionaryContextOption.cs
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Collections/ICollectionAssignment.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Collections
2 | {
3 | interface ICollectionAssignment
4 | {
5 | void Assign(IListInnerContent contents, object item);
6 | }
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Collections/ICollectionContents.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Collections
4 | {
5 | interface ICollectionContents : IParameterizedSource {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Collections/ICollectionContentsHandler.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Collections
2 | {
3 | interface ICollectionContentsHandler
4 | {
5 | void Handle(IListInnerContent contents, IReader reader);
6 | }
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Collections/IListContentsSpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Content;
2 | using ExtendedXmlSerializer.Core.Specifications;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Collections
5 | {
6 | interface IListContentsSpecification : ISpecification {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Collections/IListInnerContent.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using ExtendedXmlSerializer.ContentModel.Content;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Collections
5 | {
6 | interface IListInnerContent : IInnerContent
7 | {
8 | IList List { get; }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Collections/ILists.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Collections
5 | {
6 | interface ILists : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/CachedContents.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | sealed class CachedContents : Cache, IContents
7 | {
8 | public CachedContents(IContents content) : base(content.Get) {}
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/CachedSerializers.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | sealed class CachedSerializers : Cache, ISerializers
7 | {
8 | public CachedSerializers(ISerializers serializers) : base(serializers.Get) {}
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/Container.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Content
2 | {
3 | class Container : SerializerAdapter
4 | {
5 | public Container(IWriter element, ISerializer content)
6 | : base(content, new Enclosure(element, content)) {}
7 | }
8 |
9 | sealed class Container : Container
10 | {
11 | public Container(IWriter element, ISerializer content) : base(element, content) {}
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/ContentReader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using ExtendedXmlSerializer.ContentModel.Format;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | sealed class ContentReader : IReader
7 | {
8 | readonly Func _parser;
9 |
10 | public ContentReader(Func parser) => _parser = parser;
11 |
12 | public object Get(IFormatReader parameter) => _parser(parameter.Content());
13 | }
14 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/ContentReaders.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Content
4 | {
5 | sealed class ContentReaders : IContentReaders
6 | {
7 | public static ContentReaders Default { get; } = new ContentReaders();
8 |
9 | ContentReaders() {}
10 |
11 | public IReader Get(Func parameter) => new ContentReader(parameter);
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/ContentWriter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using ExtendedXmlSerializer.ContentModel.Format;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | sealed class ContentWriter : IWriter
7 | {
8 | readonly Func _formatter;
9 |
10 | public ContentWriter(Func formatter) => _formatter = formatter;
11 |
12 | public void Write(IFormatWriter writer, object instance) => writer.Content(_formatter(instance));
13 | }
14 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/ContentWriters.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Content
4 | {
5 | sealed class ContentWriters : IContentWriters
6 | {
7 | public static ContentWriters Default { get; } = new ContentWriters();
8 |
9 | ContentWriters() {}
10 |
11 | public IWriter Get(Func parameter) => new ContentWriter(parameter);
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/EndCurrentElement.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Format;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Content
4 | {
5 | sealed class EndCurrentElement : IWriter
6 | {
7 | public static EndCurrentElement Default { get; } = new EndCurrentElement();
8 |
9 | EndCurrentElement() {}
10 |
11 | public void Write(IFormatWriter writer, T instance) => writer.EndCurrent();
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/IContentReaders.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 | using System;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | ///
7 | /// Used by internal infrastructure to create a new content reader from a provided delegate. Not intended to be used
8 | /// for external consumers.
9 | ///
10 | public interface IContentReaders : IParameterizedSource, IReader> {}
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/IContentWriters.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 | using System;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | ///
7 | /// Used by internal infrastructure to create a new content writer from a provided delegate. Not intended to be used
8 | /// for external consumers.
9 | ///
10 | public interface IContentWriters : IParameterizedSource, IWriter> {}
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/IContents.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 | using System.Reflection;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | ///
7 | /// Root-level component that selects a serializer for handling inner-content when provided a type.
8 | ///
9 | public interface IContents : IParameterizedSource {}
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/IDictionaryEntries.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | interface IDictionaryEntries : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/IInnerContent.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Format;
2 | using ExtendedXmlSerializer.Core.Sources;
3 | using System.Collections;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Content
6 | {
7 | ///
8 | /// Used during deserialization to enumerate any inner content an element might have.
9 | ///
10 | public interface IInnerContent : ISource, IEnumerator {}
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/IInnerContentActivation.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | interface IInnerContentActivation : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/IInnerContentActivator.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Format;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | interface IInnerContentActivator : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/IInnerContentHandler.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Specifications;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Content
4 | {
5 | interface IInnerContentHandler : ISpecification {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/IInnerContentResult.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Content
4 | {
5 | interface IInnerContentResult : IParameterizedSource {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/IRecursionContents.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Content
4 | {
5 | interface IRecursionContents : IAlteration {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/ISerializers.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 | using System.Reflection;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | ///
7 | /// A root-level component that will locate and select a serializer when given a provided type.
8 | ///
9 | public interface ISerializers : IParameterizedSource {}
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/Identity.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Format;
2 | using ExtendedXmlSerializer.ContentModel.Identification;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | sealed class Identity : IWriter
7 | {
8 | readonly IIdentity _identity;
9 |
10 | public Identity(IIdentity identity) => _identity = identity;
11 |
12 | public void Write(IFormatWriter writer, T _) => writer.Start(_identity);
13 | }
14 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/InnerContentResult.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Content
2 | {
3 | sealed class InnerContentResult : IInnerContentResult
4 | {
5 | public static InnerContentResult Default { get; } = new InnerContentResult();
6 |
7 | InnerContentResult() {}
8 |
9 | public object Get(IInnerContent parameter) => parameter.Current;
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/MemberProperty.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Properties;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Content
4 | {
5 | sealed class MemberProperty : DelegatedProperty
6 | {
7 | public static MemberProperty Default { get; } = new MemberProperty();
8 |
9 | MemberProperty() : base(_ => true, _ => string.Empty, MemberIdentity.Default) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/NullValueIdentity.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Identification;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Content
4 | {
5 | sealed class NullValueIdentity : Identity
6 | {
7 | public static NullValueIdentity Default { get; } = new NullValueIdentity();
8 |
9 | NullValueIdentity() : base("nil", "http://www.w3.org/2001/XMLSchema-instance") {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/RecursionAwareContents.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 | using System.Reflection;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | sealed class RecursionAwareContents : DecoratedSource, IContents
7 | {
8 | public RecursionAwareContents(IContents contents, IRecursionContents recursion)
9 | : base(recursion.Get(contents)) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/RecursionContents.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Content
2 | {
3 | sealed class RecursionContents : IRecursionContents
4 | {
5 | public static RecursionContents Default { get; } = new RecursionContents();
6 |
7 | RecursionContents() {}
8 |
9 | public IContents Get(IContents parameter) => new Recursion(parameter);
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/ReflectionContents.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | sealed class ReflectionContents : FixedInstanceSource, IContents
7 | {
8 | public ReflectionContents(ReflectionSerializer serializer) : base(serializer.Adapt()) {}
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Content/RuntimeContents.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Content
5 | {
6 | sealed class RuntimeContents : FixedInstanceSource, IContents
7 | {
8 | public RuntimeContents(ISerializer instance) : base(instance) {}
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/BooleanConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | class BooleanConverter : Converter
6 | {
7 | public static BooleanConverter Default { get; } = new BooleanConverter();
8 |
9 | BooleanConverter() : base(XmlConvert.ToBoolean, XmlConvert.ToString) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/ByteArrayConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | sealed class ByteArrayConverter : Converter
6 | {
7 | public static ByteArrayConverter Default { get; } = new ByteArrayConverter();
8 |
9 | ByteArrayConverter() : base(Convert.FromBase64String, Convert.ToBase64String) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/ByteConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | class ByteConverter : Converter
6 | {
7 | public static ByteConverter Default { get; } = new ByteConverter();
8 |
9 | ByteConverter() : base(XmlConvert.ToSByte, XmlConvert.ToString) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/CachedConverters.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Conversion
5 | {
6 | sealed class CachedConverters : Cache, IConverters
7 | {
8 | public CachedConverters(IConverters converters) : base(converters.Get) {}
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/CharacterConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | class CharacterConverter : Converter
6 | {
7 | public static CharacterConverter Default { get; } = new CharacterConverter();
8 |
9 | CharacterConverter() : base(XmlConvert.ToChar, XmlConvert.ToString) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/ConverterContents.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.ContentModel.Content;
3 | using ExtendedXmlSerializer.Core.Sources;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Conversion
6 | {
7 | sealed class ConverterContents : DelegatedSource, IContents
8 | {
9 | public ConverterContents(ISerializers serializers) : base(serializers.Get) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/ConverterSpecification.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Specifications;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Conversion
5 | {
6 | sealed class ConverterSpecification : DelegatedAssignedSpecification
7 | {
8 | public ConverterSpecification(IConverters converters) : base(converters.Get) {}
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/DateTimeOffsetConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Xml;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Conversion
5 | {
6 | sealed class DateTimeOffsetConverter : Converter
7 | {
8 | public static DateTimeOffsetConverter Default { get; } = new DateTimeOffsetConverter();
9 |
10 | DateTimeOffsetConverter() : base(XmlConvert.ToDateTimeOffset, XmlConvert.ToString) {}
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/DecimalConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | class DecimalConverter : Converter
6 | {
7 | public static DecimalConverter Default { get; } = new DecimalConverter();
8 |
9 | DecimalConverter() : base(XmlConvert.ToDecimal, XmlConvert.ToString) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/DoubleConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | class DoubleConverter : Converter
6 | {
7 | public static DoubleConverter Default { get; } = new DoubleConverter();
8 |
9 | DoubleConverter() : base(XmlConvert.ToDouble, XmlConvert.ToString) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/FloatConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | class FloatConverter : Converter
6 | {
7 | public static FloatConverter Default { get; } = new FloatConverter();
8 |
9 | FloatConverter() : base(XmlConvert.ToSingle, XmlConvert.ToString) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/GuidConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Xml;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Conversion
5 | {
6 | class GuidConverter : Converter
7 | {
8 | public static GuidConverter Default { get; } = new GuidConverter();
9 |
10 | GuidConverter() : base(XmlConvert.ToGuid, XmlConvert.ToString) {}
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/IConverters.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Conversion
5 | {
6 | interface IConverters : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/IOptimizations.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Conversion
2 | {
3 | interface IOptimizations
4 | {
5 | void Clear();
6 | }
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/ISerializers.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Conversion
5 | {
6 | interface ISerializers : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/IntegerConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | class IntegerConverter : Converter
6 | {
7 | public static IntegerConverter Default { get; } = new IntegerConverter();
8 |
9 | IntegerConverter() : base(XmlConvert.ToInt32, XmlConvert.ToString) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/LongConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | class LongConverter : Converter
6 | {
7 | public static LongConverter Default { get; } = new LongConverter();
8 |
9 | LongConverter() : base(XmlConvert.ToInt64, XmlConvert.ToString) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/ShortConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | class ShortConverter : Converter
6 | {
7 | public static ShortConverter Default { get; } = new ShortConverter();
8 |
9 | ShortConverter() : base(XmlConvert.ToInt16, XmlConvert.ToString) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/StringConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Conversion
5 | {
6 | class StringConverter : Converter
7 | {
8 | readonly static Func Self = Self.Default.Get;
9 |
10 | public static StringConverter Default { get; } = new StringConverter();
11 |
12 | StringConverter() : base(Self, Self) {}
13 | }
14 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/TimeSpanConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Xml;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Conversion
5 | {
6 | class TimeSpanConverter : Converter
7 | {
8 | public static TimeSpanConverter Default { get; } = new TimeSpanConverter();
9 |
10 | TimeSpanConverter() : base(XmlConvert.ToTimeSpan, XmlConvert.ToString) {}
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/UnsignedByteConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | class UnsignedByteConverter : Converter
6 | {
7 | public static UnsignedByteConverter Default { get; } = new UnsignedByteConverter();
8 |
9 | UnsignedByteConverter() : base(XmlConvert.ToByte, XmlConvert.ToString) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/UnsignedIntegerConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | sealed class UnsignedIntegerConverter : Converter
6 | {
7 | public static UnsignedIntegerConverter Default { get; } = new UnsignedIntegerConverter();
8 |
9 | UnsignedIntegerConverter() : base(XmlConvert.ToUInt32, XmlConvert.ToString) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/UnsignedLongConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | class UnsignedLongConverter : Converter
6 | {
7 | public static UnsignedLongConverter Default { get; } = new UnsignedLongConverter();
8 |
9 | UnsignedLongConverter() : base(XmlConvert.ToUInt64, XmlConvert.ToString) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/UnsignedShortConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | class UnsignedShortConverter : Converter
6 | {
7 | public static UnsignedShortConverter Default { get; } = new UnsignedShortConverter();
8 |
9 | UnsignedShortConverter() : base(XmlConvert.ToUInt16, XmlConvert.ToString) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Conversion/UriConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Conversion
4 | {
5 | class UriConverter : Converter
6 | {
7 | public static UriConverter Default { get; } = new UriConverter();
8 |
9 | UriConverter() : base(s => new Uri(s), uri => uri.ToString()) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/DelegatedFormattingWriter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using ExtendedXmlSerializer.ContentModel.Identification;
3 | using ExtendedXmlSerializer.Core.Sources;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Format
6 | {
7 | sealed class DelegatedFormattingWriter : DecoratedWriter
8 | {
9 | public DelegatedFormattingWriter(Func format, IIdentity identity)
10 | : base(new FormattedWriter(new DelegatedFormatter(format), identity)) {}
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/DelegatedParsingReader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using ExtendedXmlSerializer.ContentModel.Identification;
3 | using ExtendedXmlSerializer.Core.Parsing;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Format
6 | {
7 | sealed class DelegatedParsingReader : DecoratedReader
8 | {
9 | public DelegatedParsingReader(Func format, IIdentity identity)
10 | : base(new ParsingReader(new DelegatedParser(format), identity)) {}
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/IFormatReaderContext.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 | using ExtendedXmlSerializer.ContentModel.Identification;
4 | using ExtendedXmlSerializer.Core.Parsing;
5 |
6 | namespace ExtendedXmlSerializer.ContentModel.Format
7 | {
8 | interface IFormatReaderContext : IParser, IIdentityStore, IDisposable {}
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/IFormatReaderContexts.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Format
5 | {
6 | interface IFormatReaderContexts : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/IFormatReaders.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Format
4 | {
5 | ///
6 | /// For extension authors. Specialized selector to retrieve an for each deserialization operation.
7 | ///
8 | public interface IFormatReaders : IParameterizedSource {}
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/IFormatWriters.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Format
4 | {
5 | ///
6 | /// For extension authors. Specialized selector to retrieve an for each serialization operation.
7 | ///
8 | public interface IFormatWriters : IParameterizedSource {}
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/IFormattedContent.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Format
2 | {
3 | interface IFormattedContent
4 | {
5 | string Get(IFormatWriter writer, T instance);
6 | }
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/IFormattedContentSpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Specifications;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Format
4 | {
5 | interface IFormattedContentSpecification : ISpecification {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/IReaderFormatter.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Format
4 | {
5 | interface IReaderFormatter : IFormatter {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/MemberParsedReader.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.ContentModel.Identification;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Format
5 | {
6 | class MemberParsedReader : ParsedReader
7 | {
8 | public MemberParsedReader(IIdentity identity) : base(x => x, identity) {}
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/ParsedReader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using ExtendedXmlSerializer.ContentModel.Identification;
3 | using ExtendedXmlSerializer.Core.Parsing;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Format
6 | {
7 | class ParsedReader : DecoratedReader
8 | {
9 | public ParsedReader(Func> context, IIdentity identity)
10 | : base(new ContextualReader(new ParsedContent(context).Get, identity)) {}
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/ParsingReader.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Identification;
2 | using ExtendedXmlSerializer.Core;
3 | using ExtendedXmlSerializer.Core.Parsing;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Format
6 | {
7 | sealed class ParsingReader : DecoratedReader
8 | {
9 | public ParsingReader(IParser formatter, IIdentity identity)
10 | : base(new ParsedReader(formatter.Accept, identity)) {}
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/TypedFormattingWriter.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.ContentModel.Identification;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Format
5 | {
6 | sealed class TypedFormattingWriter : DecoratedWriter
7 | {
8 | public TypedFormattingWriter(IIdentity identity)
9 | : base(new ContextualWriter(new FormattedContent(x => x).Get, identity)) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Format/Writing.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Format
2 | {
3 | readonly struct Writing
4 | {
5 | public Writing(System.Xml.XmlWriter writer, object instance)
6 | {
7 | Writer = writer;
8 | Instance = instance;
9 | }
10 |
11 | public System.Xml.XmlWriter Writer { get; }
12 | public object Instance { get; }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/GenericSerializers.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ReflectionModel;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel
4 | {
5 | sealed class GenericSerializers : Generic
6 | {
7 | public static GenericSerializers Default { get; } = new GenericSerializers();
8 |
9 | GenericSerializers() : base(typeof(GenericSerializerAdapter<>)) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/GenericWriterAdapter.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Format;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel
4 | {
5 | class GenericWriterAdapter : IWriter
6 | {
7 | readonly IWriter _writer;
8 |
9 | public GenericWriterAdapter(IWriter writer) => _writer = writer;
10 |
11 | public void Write(IFormatWriter writer, object instance) => _writer.Write(writer, (T)instance);
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/IRuntimeSerialization.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Content;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel
4 | {
5 | ///
6 | /// A specialized that is used during runtime when no serializer can be located for a provided type.
7 | ///
8 | public interface IRuntimeSerialization : IContents {}
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/IRuntimeSerializationExceptionMessage.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 | using System.Reflection;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel
5 | {
6 | ///
7 | /// Used during runtime serialization to retrieve the message displayed when an exception is encountered during deserialization.
8 | ///
9 | public interface IRuntimeSerializationExceptionMessage : IParameterizedSource {}
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Identification/IAliases.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Identification
4 | {
5 | interface IAliases : IAlteration {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Identification/IIdentifierFormatter.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Identification
4 | {
5 | interface IIdentifierFormatter : IFormatter {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Identification/IIdentifiers.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Identification
5 | {
6 | interface IIdentifiers : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Identification/IIdentities.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Identification
5 | {
6 | interface IIdentities : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Identification/INamespaceFormatter.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Identification
5 | {
6 | interface INamespaceFormatter : IFormatter {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Identification/IdentifierFormatter.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Identification
2 | {
3 | sealed class IdentifierFormatter : IIdentifierFormatter
4 | {
5 | public static IdentifierFormatter Default { get; } = new IdentifierFormatter();
6 |
7 | IdentifierFormatter() {}
8 |
9 | public string Get(int parameter)
10 | {
11 | var count = parameter.ToString();
12 | var result = $"ns{count}";
13 | return result;
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/AllowAssignedValues.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Specifications;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | sealed class AllowAssignedValues : AllowedValueSpecification
6 | {
7 | public static AllowAssignedValues Default { get; } = new AllowAssignedValues();
8 |
9 | AllowAssignedValues() : base(AssignedSpecification.Default) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/AllowedMemberValues.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | sealed class AllowedMemberValues : DecoratedSource, IAllowedMemberValues
7 | {
8 | public AllowedMemberValues(IParameterizedSource source) :
9 | base(source) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/AllowedValueSpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Specifications;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | class AllowedValueSpecification : DecoratedSpecification, IAllowedValueSpecification
6 | {
7 | public AllowedValueSpecification(ISpecification specification) : base(specification) {}
8 | }
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/AlwaysEmitMemberSpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Specifications;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | class AlwaysEmitMemberSpecification : AllowedValueSpecification
6 | {
7 | public static AlwaysEmitMemberSpecification Default { get; } = new AlwaysEmitMemberSpecification();
8 |
9 | AlwaysEmitMemberSpecification() : base(AlwaysSpecification.Default) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/AttributeSpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Specifications;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | class AttributeSpecification : DecoratedSpecification, IAttributeSpecification
6 | {
7 | public AttributeSpecification(ISpecification specification) : base(specification) {}
8 | }
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/AttributeSpecifications.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Reflection;
3 | using ExtendedXmlSerializer.Core.Sources;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Members
6 | {
7 | sealed class AttributeSpecifications
8 | : TableSource,
9 | IAttributeSpecifications
10 | {
11 | public AttributeSpecifications(IDictionary store) : base(store) {}
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/DefaultMemberContents.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Content;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | sealed class DefaultMemberContents : IMemberContents
6 | {
7 | readonly IContents _contents;
8 |
9 | public DefaultMemberContents(IContents contents) => _contents = contents;
10 |
11 | public ISerializer Get(IMember parameter) => _contents.Get(parameter.MemberType);
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IAllowedMemberValues.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 | using System.Reflection;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | ///
7 | /// A selector that is used to provide a specification for a member that will determine if it will emit or not.
8 | ///
9 | public interface IAllowedMemberValues : IParameterizedSource {}
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IAllowedValueSpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Specifications;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | ///
6 | /// A specific specification implementation that determines if a value should be emitted.
7 | ///
8 | public interface IAllowedValueSpecification : ISpecification {}
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IAttributeSpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Specifications;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | ///
6 | /// A specification that determines if a provided value should emit as an attribute or content.
7 | ///
8 | public interface IAttributeSpecification : ISpecification {}
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IAttributeSpecifications.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | interface IAttributeSpecifications : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IInstanceMemberSerialization.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Content;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | interface IInstanceMemberSerialization : IParameterizedSource,
7 | IParameterizedSource {}
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IInstanceMemberSerializations.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | interface IInstanceMemberSerializations : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IInstanceValueSpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Specifications;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | interface IInstanceValueSpecification : IAllowedValueSpecification
6 | {
7 | ISpecification Instance { get; }
8 | }
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMappedNames.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ReflectionModel;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | interface IMappedNames : IMemberTable, INames {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMemberAccessors.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | interface IMemberAccessors : IParameterizedSource {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMemberAssignment.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Content;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | interface IMemberAssignment
6 | {
7 | void Assign(IInnerContent contents, IMemberAccess access, object value);
8 | }
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMemberContents.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | interface IMemberContents : IParameterizedSource {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMemberConverterSpecification.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Specifications;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | interface IMemberConverterSpecification : ISpecification {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMemberConverters.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.ContentModel.Conversion;
3 | using ExtendedXmlSerializer.Core.Sources;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Members
6 | {
7 | interface IMemberConverters : IParameterizedSource {}
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMemberHandler.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Content;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | interface IMemberHandler
6 | {
7 | void Handle(IInnerContent contents, IMemberSerializer member);
8 | }
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMemberOrder.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | interface IMemberOrder : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMemberPolicy.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Specifications;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | interface IMemberPolicy : ISpecification {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMemberSerializations.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 | using System.Reflection;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | ///
7 | /// Used to retrieve a member serialization component from a provided type.
8 | ///
9 | public interface IMemberSerializations : IParameterizedSource {}
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMemberSerializers.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | interface IMemberSerializers : IParameterizedSource {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMemberSpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Specifications;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | interface IMemberSpecification : ISpecification {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMembers.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | interface IMembers : IParameterizedSource {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IMetadataSpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Specifications;
2 | using System.Reflection;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | ///
7 | /// A specific implementation marker that is used to determine whether or not to select and process a type's member.
8 | ///
9 | public interface IMetadataSpecification : ISpecification, ISpecification {}
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/INames.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Reflection;
2 | using System.Reflection;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | ///
7 | /// Used to select a name from a provided member metadata.
8 | ///
9 | public interface INames : INames {}
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IRuntimeMemberList.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Immutable;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | interface IRuntimeMemberList : IParameterizedSource> {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IRuntimeSerializer.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | interface IRuntimeSerializer : IParameterizedSource, IMemberSerializer {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/ITypeMemberSource.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Reflection;
3 | using ExtendedXmlSerializer.Core.Sources;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Members
6 | {
7 | interface ITypeMemberSource : IParameterizedSource> {}
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/ITypeMembers.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Immutable;
2 | using System.Reflection;
3 | using ExtendedXmlSerializer.Core.Sources;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Members
6 | {
7 | interface ITypeMembers : IParameterizedSource> {}
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IValidMemberSpecification.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Specifications;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | interface IValidMemberSpecification : ISpecification {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/IVariableTypeMemberSpecifications.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | interface IVariableTypeMemberSpecifications : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/MemberAssignment.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Content;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Members
4 | {
5 | sealed class MemberAssignment : IMemberAssignment
6 | {
7 | public static MemberAssignment Default { get; } = new MemberAssignment();
8 |
9 | MemberAssignment() {}
10 |
11 | public void Assign(IInnerContent contents, IMemberAccess access, object value)
12 | => access.Assign(contents.Current, value);
13 | }
14 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/MemberConverterSpecification.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Specifications;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | sealed class MemberConverterSpecification : DecoratedSpecification, IMemberConverterSpecification
7 | {
8 | public MemberConverterSpecification(ISpecification specification) : base(specification) {}
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Members/MemberNames.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Members
5 | {
6 | sealed class MemberNames : Cache, INames
7 | {
8 | public MemberNames(IParameterizedSource source) : base(source.Get) {}
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Properties/EntityIdentity.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Conversion;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Properties
4 | {
5 | sealed class EntityIdentity : ConverterProperty
6 | {
7 | public static EntityIdentity Default { get; } = new EntityIdentity();
8 |
9 | EntityIdentity() : base(StringConverter.Default, new FrameworkIdentity("entity")) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Properties/IProperty.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Identification;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Properties
4 | {
5 | interface IProperty : ISerializer, IIdentity {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Properties/ITypePartsFormatter.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Conversion;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Properties
5 | {
6 | interface ITypePartsFormatter : IFormatter {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Properties/IdentityProperty.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Conversion;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Properties
4 | {
5 | sealed class IdentityProperty : ConverterProperty
6 | {
7 | public static IdentityProperty Default { get; } = new IdentityProperty();
8 |
9 | IdentityProperty() : base(UnsignedIntegerConverter.Default.Structured(),
10 | new FrameworkIdentity("identity")) {}
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Properties/MigrationVersionIdentity.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Conversion;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Properties
4 | {
5 | sealed class MigrationVersionIdentity : ConverterProperty
6 | {
7 | public static MigrationVersionIdentity Default { get; } = new MigrationVersionIdentity();
8 |
9 | MigrationVersionIdentity() : base(UnsignedIntegerConverter.Default, new FrameworkIdentity("version")) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Properties/ReferenceIdentity.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Conversion;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Properties
4 | {
5 | sealed class ReferenceIdentity : ConverterProperty
6 | {
7 | public static ReferenceIdentity Default { get; } = new ReferenceIdentity();
8 |
9 | ReferenceIdentity() : base(UnsignedIntegerConverter.Default.Structured(),
10 | new FrameworkIdentity("reference")) {}
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/ReaderAdapter.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Format;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel
4 | {
5 | sealed class ReaderAdapter : IReader
6 | {
7 | readonly IReader _serializer;
8 |
9 | public ReaderAdapter(IReader serializer)
10 | {
11 | _serializer = serializer;
12 | }
13 |
14 | public T Get(IFormatReader parameter) => (T)_serializer.Get(parameter);
15 | }
16 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/AssemblyPath.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Reflection
2 | {
3 | readonly struct AssemblyPath
4 | {
5 | public AssemblyPath(string @namespace, string path)
6 | {
7 | Namespace = @namespace;
8 | Path = path;
9 | }
10 |
11 | public string Namespace { get; }
12 | public string Path { get; }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/DimensionsParser.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Parsing;
2 | using Sprache;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Reflection
5 | {
6 | sealed class DimensionsParser : ItemsParser
7 | {
8 | public static DimensionsParser Default { get; } = new DimensionsParser();
9 |
10 | DimensionsParser() : base(Parse.Number.Select(int.Parse)) {}
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/IActivation.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Reflection
5 | {
6 | interface IActivation : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/IAssemblyTypePartitions.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ReflectionModel;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Reflection
4 | {
5 | interface IAssemblyTypePartitions : ITypePartitions {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/IClassification.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.ContentModel.Format;
3 | using ExtendedXmlSerializer.Core.Sources;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Reflection
6 | {
7 | interface IClassification : IParameterizedSource {}
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/IDiscoveredTypes.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Immutable;
2 | using System.Reflection;
3 | using ExtendedXmlSerializer.Core.Sources;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Reflection
6 | {
7 | interface IDiscoveredTypes : IParameterizedSource> {}
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/IGenericTypes.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Reflection
2 | {
3 | interface IGenericTypes : ITypeCandidates {}
4 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/IPartitionedTypeSpecification.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Specifications;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Reflection
5 | {
6 | interface IPartitionedTypeSpecification : ISpecification {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/IReflectionParser.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Parsing;
2 | using System.Reflection;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Reflection
5 | {
6 | ///
7 | /// Used to parse text into a reflection member.
8 | ///
9 | public interface IReflectionParser : IParser {}
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/ITypeCandidates.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Immutable;
2 | using System.Reflection;
3 | using ExtendedXmlSerializer.ContentModel.Identification;
4 | using ExtendedXmlSerializer.Core.Sources;
5 |
6 | namespace ExtendedXmlSerializer.ContentModel.Reflection
7 | {
8 | interface ITypeCandidates : IParameterizedSource> {}
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/ITypeDefaults.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Reflection
5 | {
6 | interface ITypeDefaults : IParameterizedSource {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/ITypeFormatter.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Reflection
5 | {
6 | interface ITypeFormatter : IFormatter {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/ITypeIdentities.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.ContentModel.Identification;
3 | using ExtendedXmlSerializer.Core.Sources;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Reflection
6 | {
7 | interface ITypeIdentities : IParameterizedSource {}
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/ITypeMemberDefaults.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 | using ExtendedXmlSerializer.Core.Sources;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Reflection
6 | {
7 | interface ITypeMemberDefaults : IParameterizedSource> {}
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/ITypePartReflector.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.ContentModel.Conversion;
3 | using ExtendedXmlSerializer.Core.Sources;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Reflection
6 | {
7 | interface ITypePartReflector : IParameterizedSource {}
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/ITypePartResolver.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.ContentModel.Conversion;
3 | using ExtendedXmlSerializer.Core.Sources;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Reflection
6 | {
7 | interface ITypePartResolver : IParameterizedSource {}
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/ITypes.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Identification;
2 | using ExtendedXmlSerializer.Core.Sources;
3 | using System.Reflection;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Reflection
6 | {
7 | ///
8 | /// Used to resolve a type from a provided identity.
9 | ///
10 | public interface ITypes : IParameterizedSource {}
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/IVariableTypeSpecification.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 | using ExtendedXmlSerializer.Core.Specifications;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Reflection
6 | {
7 | interface IVariableTypeSpecification : ISpecification, ISpecification {}
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/Identifier.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.ContentModel.Reflection
2 | {
3 | sealed class Identifier : Core.Parsing.Identifier
4 | {
5 | public static Identifier Default { get; } = new Identifier();
6 |
7 | Identifier() : base('-', '_') {}
8 | }
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/Key.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Identification;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Reflection
4 | {
5 | readonly struct Key : IIdentity
6 | {
7 | public Key(string name) : this(name, string.Empty) {}
8 |
9 | public Key(string name, string identifier)
10 | {
11 | Name = name;
12 | Identifier = identifier;
13 | }
14 |
15 | public string Identifier { get; }
16 | public string Name { get; }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/MemberParts.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Conversion;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel.Reflection
4 | {
5 | readonly struct MemberParts
6 | {
7 | public MemberParts(TypeParts type, string memberName)
8 | {
9 | Type = type;
10 | MemberName = memberName;
11 | }
12 |
13 | public TypeParts Type { get; }
14 | public string MemberName { get; }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/Names.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Reflection
5 | {
6 | sealed class Names : Cache, INames
7 | {
8 | public Names(IParameterizedSource source) : base(source.Get) {}
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/TypeFormatter.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using ExtendedXmlSerializer.Core.Sources;
3 |
4 | namespace ExtendedXmlSerializer.ContentModel.Reflection
5 | {
6 | sealed class TypeFormatter : DecoratedSource, ITypeFormatter
7 | {
8 | public TypeFormatter(INames names) : base(names.Or(TypeNameFormatter.Default)) {}
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/Reflection/TypePartsList.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Conversion;
2 | using ExtendedXmlSerializer.Core.Parsing;
3 | using Sprache;
4 |
5 | namespace ExtendedXmlSerializer.ContentModel.Reflection
6 | {
7 | sealed class TypePartsList : ItemsParser
8 | {
9 | public static TypePartsList Default { get; } = new TypePartsList();
10 |
11 | TypePartsList() : base(Parse.Ref(() => TypePartsParser.Default.ToParser())) {}
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/ContentModel/WriterAdapter.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ContentModel.Format;
2 |
3 | namespace ExtendedXmlSerializer.ContentModel
4 | {
5 | sealed class WriterAdapter : IWriter
6 | {
7 | readonly IWriter _writer;
8 |
9 | public WriterAdapter(IWriter writer) => _writer = writer;
10 |
11 | public void Write(IFormatWriter writer, T instance) => _writer.Write(writer, instance);
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/ConditionMonitorState.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Core
2 | {
3 | ///
4 | public enum ConditionMonitorState
5 | {
6 | ///
7 | None,
8 | ///
9 | Applying,
10 | ///
11 | Applied
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Conditions.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.Core
4 | {
5 | sealed class Conditions : ReferenceCache, IConditions
6 | {
7 | public static Conditions Default { get; } = new Conditions();
8 |
9 | public Conditions() : base(_ => new ConditionMonitor()) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/DictionaryPairTypes.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 |
3 | namespace ExtendedXmlSerializer.Core
4 | {
5 | readonly struct DictionaryPairTypes
6 | {
7 | public DictionaryPairTypes(TypeInfo keyType, TypeInfo valueType)
8 | {
9 | KeyType = keyType;
10 | ValueType = valueType;
11 | }
12 |
13 | public TypeInfo KeyType { get; }
14 | public TypeInfo ValueType { get; }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/EmptyCommand.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Core
2 | {
3 | sealed class EmptyCommand : ICommand
4 | {
5 | public static EmptyCommand Default { get; } = new EmptyCommand();
6 |
7 | EmptyCommand() {}
8 |
9 | public void Execute(T parameter) {}
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/IAllInterfaces.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Immutable;
2 | using System.Reflection;
3 | using ExtendedXmlSerializer.Core.Sources;
4 |
5 | namespace ExtendedXmlSerializer.Core
6 | {
7 | interface IAllInterfaces : IParameterizedSource> {}
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/IConditions.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.Core
4 | {
5 | interface IConditions : IParameterizedSource {}
6 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/ISortAware.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Core
2 | {
3 | ///
4 | public interface ISortAware
5 | {
6 | ///
7 | int Sort { get; }
8 | }
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/ITypedSortOrder.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.ReflectionModel;
2 |
3 | namespace ExtendedXmlSerializer.Core
4 | {
5 | ///
6 | public interface ITypedSortOrder : ITypedTable {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Pairs.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace ExtendedXmlSerializer.Core
4 | {
5 | static class Pairs
6 | {
7 | public static KeyValuePair Create(TKey key, TValue value) =>
8 | new KeyValuePair(key, value);
9 | }
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Parsing/CodeIdentifier.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Core.Parsing
2 | {
3 | sealed class CodeIdentifier : Identifier
4 | {
5 | public static CodeIdentifier Default { get; } = new CodeIdentifier();
6 |
7 | CodeIdentifier() : base("_") {}
8 | }
9 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Parsing/DelegatedParser.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ExtendedXmlSerializer.Core.Parsing
4 | {
5 | sealed class DelegatedParser : IParser
6 | {
7 | readonly Func _source;
8 |
9 | public DelegatedParser(Func source) => _source = source;
10 |
11 | public T Get(string parameter) => _source(parameter);
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Parsing/IParser.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 |
3 | namespace ExtendedXmlSerializer.Core.Parsing
4 | {
5 | ///
6 | /// Selector that creates an instance of the specified type based on the provided text string.
7 | ///
8 | /// The type to create.
9 | public interface IParser : IParameterizedSource {}
10 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Parsing/IParsing.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 | using Sprache;
3 |
4 | namespace ExtendedXmlSerializer.Core.Parsing
5 | {
6 | interface IParsing : IParameterizedSource> {}
7 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Parsing/Identifier.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Sprache;
3 |
4 | namespace ExtendedXmlSerializer.Core.Parsing
5 | {
6 | class Identifier : Parsing
7 | {
8 | public Identifier(IEnumerable allowed) : this(allowed.Fixed()) {}
9 |
10 | public Identifier(params char[] allowed)
11 | : base(Parse.Identifier(Parse.Letter, Parse.LetterOrDigit.XOr(Parse.Chars(allowed)))) {}
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Parsing/Inputs.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 | using Sprache;
3 |
4 | namespace ExtendedXmlSerializer.Core.Parsing
5 | {
6 | sealed class Inputs : ReferenceCache
7 | {
8 | public static Inputs Default { get; } = new Inputs();
9 |
10 | Inputs() : base(x => new Input(x)) {}
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Parsing/Parsing.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Sources;
2 | using Sprache;
3 |
4 | namespace ExtendedXmlSerializer.Core.Parsing
5 | {
6 | class Parsing : DelegatedSource>, IParsing
7 | {
8 | public static implicit operator Parser(Parsing instance) => instance.Get;
9 |
10 | public Parsing(Parser parser) : base(parser.Invoke) {}
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/SortComparer.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace ExtendedXmlSerializer.Core
4 | {
5 | sealed class SortComparer : IComparer where T : class
6 | {
7 | public static SortComparer Default { get; } = new SortComparer();
8 |
9 | SortComparer() {}
10 |
11 | public int Compare(T x, T y) => GetSort(x)
12 | .CompareTo(GetSort(y));
13 |
14 | static int GetSort(T parameter) => (parameter as ISortAware)?.Sort ?? -1;
15 | }
16 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Sources/AlterationAdapter.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Core.Sources
2 | {
3 | sealed class AlterationAdapter : IAlteration
4 | {
5 | readonly IAlteration _alteration;
6 |
7 | public AlterationAdapter(IAlteration alteration) => _alteration = alteration;
8 |
9 | public object Get(object parameter) => _alteration.Get(parameter.To());
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Sources/ConfiguringAlteration.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Core.Sources
2 | {
3 | sealed class ConfiguringAlteration : IAlteration
4 | {
5 | readonly ICommand _configuration;
6 |
7 | public ConfiguringAlteration(ICommand configuration) => _configuration = configuration;
8 |
9 | public T Get(T parameter)
10 | {
11 | _configuration.Execute(parameter);
12 | return parameter;
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Sources/DecoratedSource.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Core.Sources
2 | {
3 | class DecoratedSource : IParameterizedSource
4 | {
5 | readonly IParameterizedSource _source;
6 |
7 | public DecoratedSource(IParameterizedSource source) => _source = source;
8 |
9 | public TResult Get(TParameter parameter) => _source.Get(parameter);
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Sources/Defaults.cs:
--------------------------------------------------------------------------------
1 | using ExtendedXmlSerializer.Core.Parsing;
2 | using Sprache;
3 |
4 | namespace ExtendedXmlSerializer.Core.Sources
5 | {
6 | static class Defaults
7 | {
8 | public static CharacterParser ItemDelimiter { get; } = new CharacterParser(',', Parse.Char(',')
9 | .Token());
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Sources/DelegatedAlteration.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ExtendedXmlSerializer.Core.Sources
4 | {
5 | class DelegatedAlteration : IAlteration
6 | {
7 | readonly Func _alteration;
8 |
9 | public DelegatedAlteration(Func alteration) => _alteration = alteration;
10 |
11 | public T Get(T parameter) => _alteration(parameter);
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Sources/DelegatedFormatter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ExtendedXmlSerializer.Core.Sources
4 | {
5 | sealed class DelegatedFormatter : IFormatter
6 | {
7 | readonly Func _source;
8 |
9 | public DelegatedFormatter(Func source) => _source = source;
10 |
11 | public string Get(T parameter) => _source(parameter);
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Sources/Enumerable.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace ExtendedXmlSerializer.Core.Sources
4 | {
5 | class Enumerable : ItemsBase
6 | {
7 | readonly IEnumerable _enumerable;
8 |
9 | public Enumerable(IEnumerable enumerable) => _enumerable = enumerable;
10 |
11 | public override IEnumerator GetEnumerator() => _enumerable.GetEnumerator();
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Sources/IAlteration.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Core.Sources
2 | {
3 | ///
4 | /// A specialized selection that accepts and returns an instance of the same type.
5 | ///
6 | /// The type instance to alter.
7 | public interface IAlteration : IParameterizedSource {}
8 | }
--------------------------------------------------------------------------------
/src/ExtendedXmlSerializer/Core/Sources/ICommandSelector.cs:
--------------------------------------------------------------------------------
1 | namespace ExtendedXmlSerializer.Core.Sources
2 | {
3 | interface ICommandSelector : IParameterizedSource