├── .build ├── Deploy-Documentation.ps1 ├── Install.ps1 ├── Prepare-Deployment.ps1 ├── Store-CurrentRelease.ps1 └── appveyor.yml ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── ask-a-question.md │ └── submit-an-issue.md ├── issue-branch.yml ├── issue_label_bot.yaml ├── pr-labeler.yml └── workflows │ ├── pr-labeler.yml │ ├── publish-release-build.yml │ └── update-changelog.yml ├── .gitignore ├── .gitmodules ├── CHANGELOG.md ├── CodeProject.html ├── Directory.build.props ├── ExtendedXmlSerializer Development.sln ├── ExtendedXmlSerializer Development.sln.DotSettings ├── ExtendedXmlSerializer Performance.sln ├── ExtendedXmlSerializer Samples.sln ├── ExtendedXmlSerializer.sln ├── IsExternalInit.cs ├── LICENSE ├── Logo.png ├── NuGet.config ├── README.md ├── documentation ├── .archive │ ├── ExtendedXmlSerializer.Documentation │ │ ├── ExtendedXmlSerializer.Documentation.shfbproj │ │ └── icons │ │ │ └── Help.png │ ├── conf.py │ ├── docGenerator │ │ └── ExtendedXmlSerializer.DocGenerator │ │ │ ├── App.config │ │ │ ├── ExportedTypes │ │ │ ├── BaseExportedType.cs │ │ │ ├── CodeFormat.cs │ │ │ ├── ExportedTypeManager.cs │ │ │ ├── HtmlText.cs │ │ │ ├── IExportedType.cs │ │ │ └── ReStructuredText.cs │ │ │ ├── ExtendedXmlSerializer.DocGenerator.csproj │ │ │ ├── Program.cs │ │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ ├── get-started │ │ └── index.rst │ └── index.rst ├── .gitignore ├── conceptual │ ├── index.md │ └── toc.yml ├── docfx.json ├── index.md ├── logo.png ├── reference │ ├── .gitignore │ └── index.md ├── templates │ └── default │ │ ├── ManagedReference.common.js │ │ ├── ManagedReference.extension.js │ │ ├── ManagedReference.html.primary.js │ │ ├── ManagedReference.html.primary.tmpl │ │ ├── RestApi.common.js │ │ ├── RestApi.extension.js │ │ ├── RestApi.html.primary.js │ │ ├── RestApi.html.primary.tmpl │ │ ├── UniversalReference.common.js │ │ ├── UniversalReference.extension.js │ │ ├── UniversalReference.html.primary.js │ │ ├── UniversalReference.html.primary.tmpl │ │ ├── common.js │ │ ├── conceptual.extension.js │ │ ├── conceptual.html.primary.js │ │ ├── conceptual.html.primary.tmpl │ │ ├── favicon.ico │ │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ │ ├── layout │ │ └── _master.tmpl │ │ ├── logo.png │ │ ├── logo.svg │ │ ├── partials │ │ ├── _affix.liquid │ │ ├── _breadcrumb.liquid │ │ ├── _footer.liquid │ │ ├── _head.liquid │ │ ├── _logo.liquid │ │ ├── _navbar.liquid │ │ ├── _scripts.liquid │ │ ├── _toc.liquid │ │ ├── affix.tmpl.partial │ │ ├── breadcrumb.tmpl.partial │ │ ├── class.header.tmpl.partial │ │ ├── class.tmpl.partial │ │ ├── classSubtitle.tmpl.partial │ │ ├── customMREFContent.tmpl.partial │ │ ├── dd-li.tmpl.partial │ │ ├── enum.tmpl.partial │ │ ├── footer.tmpl.partial │ │ ├── head.tmpl.partial │ │ ├── li.tmpl.partial │ │ ├── logo.tmpl.partial │ │ ├── namespace.tmpl.partial │ │ ├── namespaceSubtitle.tmpl.partial │ │ ├── navbar.tmpl.partial │ │ ├── rest.child.tmpl.partial │ │ ├── rest.tmpl.partial │ │ ├── scripts.tmpl.partial │ │ ├── searchResults.tmpl.partial │ │ ├── title.tmpl.partial │ │ ├── toc.tmpl.partial │ │ └── uref │ │ │ ├── class.header.tmpl.partial │ │ │ ├── class.tmpl.partial │ │ │ ├── enum.tmpl.partial │ │ │ ├── inheritance.tmpl.partial │ │ │ ├── namespace.tmpl.partial │ │ │ └── parameters.tmpl.partial │ │ ├── search-stopwords.json │ │ ├── styles │ │ ├── docfx.css │ │ ├── docfx.js │ │ ├── docfx.vendor.css │ │ ├── docfx.vendor.js │ │ ├── lunr.js │ │ ├── lunr.min.js │ │ ├── main.css │ │ ├── main.js │ │ └── search-worker.js │ │ ├── toc.extension.js │ │ ├── toc.html.js │ │ ├── toc.html.tmpl │ │ └── token.json └── toc.yml ├── samples └── ExtendedXmlSerializer.Samples │ ├── CustomSerializator │ ├── CustomSerializatorSamples.cs │ ├── TestClass.cs │ └── TestClassSerializer.cs │ ├── Dictianary │ ├── DictianarySamples.cs │ └── TestClass.cs │ ├── Encrypt │ ├── EncryptSamples.cs │ └── Person.cs │ ├── ExtendedXmlSerializer.Samples.csproj │ ├── Extensibility │ ├── AttachedProperties.cs │ ├── AutoFormatting.cs │ ├── Converters.cs │ ├── CustomStructConverter.cs │ ├── ImplicitTypes.cs │ ├── MarkupExtensions.cs │ ├── OptimizedNamespaces.cs │ ├── ParameterizedContent.cs │ ├── PrivateConstructors.cs │ ├── Tuples.cs │ └── VerbatimContent.cs │ ├── FluentApi │ ├── Car.cs │ └── FluentApiSamples.cs │ ├── Generics │ └── GenericSerializer.cs │ ├── Introduction │ ├── Create.cs │ ├── Member.cs │ ├── Run.cs │ ├── Settings.cs │ ├── Subject.cs │ └── Type.cs │ ├── MigrationMap │ ├── MigrationMapSamples.cs │ ├── TestClass.cs │ └── TestClassMigrations.cs │ ├── ObjectReference │ ├── ObjectReferenceSamples.cs │ └── Person.cs │ ├── Parametrized │ └── ParametrizedConstructors.cs │ ├── Program.cs │ ├── Properties │ └── AssemblyInfo.cs │ ├── Simple │ ├── Overrides.cs │ ├── Serialization.cs │ ├── SimpleSamples.cs │ └── TestClass.cs │ └── Upgrade │ └── Example.cs ├── src └── ExtendedXmlSerializer │ ├── Configuration │ ├── AllowedSpecificationAlteration.cs │ ├── CompositeConfigurationProfile.cs │ ├── ConfigurationContainer.cs │ ├── ConfiguredContainer.cs │ ├── ConfiguredSerializer.cs │ ├── ContentsDecorationContext.cs │ ├── ContextBase.cs │ ├── DefaultNames.cs │ ├── ElementDecorationContext.cs │ ├── EmitBehavior.cs │ ├── EmitBehaviors.cs │ ├── ExtensionCollection.cs │ ├── IConfigurationContainer.cs │ ├── IConfigurationProfile.cs │ ├── IContext.cs │ ├── IEmitBehavior.cs │ ├── IExtensionCollection.cs │ ├── IInternalMemberConfiguration.cs │ ├── IInternalTypeConfiguration.cs │ ├── IMemberConfiguration.cs │ ├── IMemberConfigurations.cs │ ├── IProperty.cs │ ├── IRootContext.cs │ ├── IServicesFactory.cs │ ├── ITypeConfiguration.cs │ ├── ITypeConfigurationContext.cs │ ├── ITypeConfigurations.cs │ ├── MemberConfiguration.cs │ ├── MemberConfigurationExtensions.cs │ ├── MemberConfigurations.cs │ ├── MemberInfo.cs │ ├── MemberProperty.cs │ ├── MemberPropertyBase.cs │ ├── MemberRegistrationContext.cs │ ├── MemberSerializationRegistrationContext.cs │ ├── ReferencedDeserializationContext.cs │ ├── RootContext.cs │ ├── RootContextExtension.cs │ ├── ServicesFactory.cs │ ├── TypeConfiguration.cs │ ├── TypeConfigurationContext.cs │ ├── TypeConfigurationExtensions.cs │ ├── TypeConfigurations.cs │ ├── TypeConverterRegistrationContext.cs │ ├── TypeProperty.cs │ ├── TypeRegistrationContext.cs │ ├── TypeSerializationRegistrationContext.cs │ ├── TypeSerializerComposerRegistrationContext.cs │ └── UnknownContentContext.cs │ ├── ContentModel │ ├── AlteringWriter.cs │ ├── Collections │ │ ├── ArrayContents.cs │ │ ├── ArrayElement.cs │ │ ├── ArrayIdentity.cs │ │ ├── ArrayReader.cs │ │ ├── ArraySpecification.cs │ │ ├── Arrays.cs │ │ ├── CollectionAssignment.cs │ │ ├── CollectionContentInput.cs │ │ ├── CollectionContents.cs │ │ ├── CollectionContentsHandler.cs │ │ ├── CollectionInnerContentHandler.cs │ │ ├── CollectionItemAwareWriter.cs │ │ ├── CollectionSpecification.cs │ │ ├── CollectionWithMembersInnerContentHandler.cs │ │ ├── Collections.cs │ │ ├── DefaultCollectionSpecification.cs │ │ ├── DefaultCollections.cs │ │ ├── DictionaryContextOption.cs │ │ ├── Dimensions.cs │ │ ├── EnumerableWriter.cs │ │ ├── ICollectionAssignment.cs │ │ ├── ICollectionContents.cs │ │ ├── ICollectionContentsHandler.cs │ │ ├── IListContentsSpecification.cs │ │ ├── IListInnerContent.cs │ │ ├── ILists.cs │ │ ├── ListContentsSpecification.cs │ │ ├── Lists.cs │ │ ├── MappedArrayContents.cs │ │ ├── MappedArraySerializers.cs │ │ ├── MappedArraySpecification.cs │ │ └── MemberedCollectionWriter.cs │ ├── ConditionalWriter.cs │ ├── Content │ │ ├── CachedContents.cs │ │ ├── CachedSerializers.cs │ │ ├── ConditionalInnerContentHandler.cs │ │ ├── Container.cs │ │ ├── Contains.cs │ │ ├── ContentReader.cs │ │ ├── ContentReaders.cs │ │ ├── ContentSerializerAttribute.cs │ │ ├── ContentWriter.cs │ │ ├── ContentWriters.cs │ │ ├── DictionaryContentSpecification.cs │ │ ├── DictionaryContents.cs │ │ ├── DictionaryEntries.cs │ │ ├── DynamicAwareSerializers.cs │ │ ├── Element.cs │ │ ├── Enclosure.cs │ │ ├── EndCurrentElement.cs │ │ ├── GenericElement.cs │ │ ├── GenericIdentity.cs │ │ ├── IContentReaders.cs │ │ ├── IContentWriters.cs │ │ ├── IContents.cs │ │ ├── IDictionaryEntries.cs │ │ ├── IElement.cs │ │ ├── IInnerContent.cs │ │ ├── IInnerContentActivation.cs │ │ ├── IInnerContentActivator.cs │ │ ├── IInnerContentHandler.cs │ │ ├── IInnerContentResult.cs │ │ ├── IInnerContentServices.cs │ │ ├── IRecursionContents.cs │ │ ├── ISerializers.cs │ │ ├── Identity.cs │ │ ├── InnerContentReader.cs │ │ ├── InnerContentResult.cs │ │ ├── InnerContentServices.cs │ │ ├── IsElement.cs │ │ ├── MemberIdentity.cs │ │ ├── MemberProperty.cs │ │ ├── MemberPropertyWriter.cs │ │ ├── NullElementIdentity.cs │ │ ├── NullValueIdentity.cs │ │ ├── Recursion.cs │ │ ├── RecursionAwareContents.cs │ │ ├── RecursionContents.cs │ │ ├── ReflectionContentSpecification.cs │ │ ├── ReflectionContents.cs │ │ ├── ReflectionSerializer.cs │ │ ├── RegisteredContentSpecification.cs │ │ ├── RegisteredContents.cs │ │ ├── RuntimeContents.cs │ │ ├── RuntimeElement.cs │ │ ├── Serializers.cs │ │ ├── VariableTypeIdentity.cs │ │ ├── VerbatimAttribute.cs │ │ └── VerbatimContentSerializer.cs │ ├── Conversion │ │ ├── BooleanConverter.cs │ │ ├── ByteArrayConverter.cs │ │ ├── ByteConverter.cs │ │ ├── CachedConverters.cs │ │ ├── CharacterConverter.cs │ │ ├── Converter.cs │ │ ├── ConverterBase.cs │ │ ├── ConverterContents.cs │ │ ├── ConverterSpecification.cs │ │ ├── Converters.cs │ │ ├── DateTimeConverter.cs │ │ ├── DateTimeOffsetConverter.cs │ │ ├── DecimalConverter.cs │ │ ├── DoubleConverter.cs │ │ ├── EnumerationConverter.cs │ │ ├── EnumerationConverters.cs │ │ ├── FloatConverter.cs │ │ ├── GuidConverter.cs │ │ ├── IConvert.cs │ │ ├── IConverter.cs │ │ ├── IConverters.cs │ │ ├── IOptimizations.cs │ │ ├── ISerializers.cs │ │ ├── IntegerConverter.cs │ │ ├── LongConverter.cs │ │ ├── Optimizations.cs │ │ ├── Serializers.cs │ │ ├── ShortConverter.cs │ │ ├── StringConverter.cs │ │ ├── StructureConverter.cs │ │ ├── TimeSpanConverter.cs │ │ ├── TypeParts.cs │ │ ├── TypePartsEqualityComparer.cs │ │ ├── UnsignedByteConverter.cs │ │ ├── UnsignedIntegerConverter.cs │ │ ├── UnsignedLongConverter.cs │ │ ├── UnsignedShortConverter.cs │ │ ├── UriConverter.cs │ │ └── WellKnownConverters.cs │ ├── DecoratedReader.cs │ ├── DecoratedWriter.cs │ ├── Defaults.cs │ ├── DeferredSerializer.cs │ ├── DelegatedSerializer.cs │ ├── Extensions.cs │ ├── Format │ │ ├── ContextualReader.cs │ │ ├── ContextualWriter.cs │ │ ├── DelegatedFormattingWriter.cs │ │ ├── DelegatedParsingReader.cs │ │ ├── FormattedContent.cs │ │ ├── FormattedWriter.cs │ │ ├── IFormat.cs │ │ ├── IFormatReader.cs │ │ ├── IFormatReaderContext.cs │ │ ├── IFormatReaderContexts.cs │ │ ├── IFormatReaders.cs │ │ ├── IFormatWriter.cs │ │ ├── IFormatWriters.cs │ │ ├── IFormattedContent.cs │ │ ├── IFormattedContentSpecification.cs │ │ ├── IReaderFormatter.cs │ │ ├── MemberParsedReader.cs │ │ ├── ParsedContent.cs │ │ ├── ParsedReader.cs │ │ ├── ParsingReader.cs │ │ ├── TypedFormattingWriter.cs │ │ └── Writing.cs │ ├── GenericReaderAdapter.cs │ ├── GenericSerializerAdapter.cs │ ├── GenericSerializers.cs │ ├── GenericWriterAdapter.cs │ ├── IReader.cs │ ├── IRuntimeSerialization.cs │ ├── IRuntimeSerializationExceptionMessage.cs │ ├── ISerializer.cs │ ├── IWriter.cs │ ├── Identification │ │ ├── Aliases.cs │ │ ├── IAliases.cs │ │ ├── IIdentifierFormatter.cs │ │ ├── IIdentifiers.cs │ │ ├── IIdentities.cs │ │ ├── IIdentity.cs │ │ ├── IIdentityStore.cs │ │ ├── INamespaceFormatter.cs │ │ ├── IdentifierFormatter.cs │ │ ├── Identifiers.cs │ │ ├── Identities.cs │ │ ├── Identity.cs │ │ ├── IdentityComparer.cs │ │ ├── IdentityFormatter.cs │ │ ├── IdentityStore.cs │ │ ├── NamespaceFormatter.cs │ │ ├── WellKnownAliases.cs │ │ └── WellKnownIdentities.cs │ ├── Members │ │ ├── AllowAssignedValues.cs │ │ ├── AllowedAssignedInstanceValues.cs │ │ ├── AllowedMemberValues.cs │ │ ├── AllowedValueSpecification.cs │ │ ├── AlwaysEmitMemberSpecification.cs │ │ ├── AttributeSpecification.cs │ │ ├── AttributeSpecifications.cs │ │ ├── BlacklistMemberPolicy.cs │ │ ├── DefaultMemberContents.cs │ │ ├── Extensions.cs │ │ ├── FieldMemberSpecification.cs │ │ ├── FixedInstanceMemberSerialization.cs │ │ ├── FixedRuntimeMemberList.cs │ │ ├── IAllowedMemberValues.cs │ │ ├── IAllowedValueSpecification.cs │ │ ├── IAttributeSpecification.cs │ │ ├── IAttributeSpecifications.cs │ │ ├── IInstanceMemberSerialization.cs │ │ ├── IInstanceMemberSerializations.cs │ │ ├── IInstanceValueSpecification.cs │ │ ├── IMappedNames.cs │ │ ├── IMember.cs │ │ ├── IMemberAccess.cs │ │ ├── IMemberAccessors.cs │ │ ├── IMemberAssignment.cs │ │ ├── IMemberContents.cs │ │ ├── IMemberConverterSpecification.cs │ │ ├── IMemberConverters.cs │ │ ├── IMemberHandler.cs │ │ ├── IMemberOrder.cs │ │ ├── IMemberPolicy.cs │ │ ├── IMemberSerialization.cs │ │ ├── IMemberSerializations.cs │ │ ├── IMemberSerializer.cs │ │ ├── IMemberSerializers.cs │ │ ├── IMemberSpecification.cs │ │ ├── IMembers.cs │ │ ├── IMetadataSpecification.cs │ │ ├── INames.cs │ │ ├── IRuntimeMemberList.cs │ │ ├── IRuntimeSerializer.cs │ │ ├── ITypeMemberSource.cs │ │ ├── ITypeMembers.cs │ │ ├── IValidMemberSpecification.cs │ │ ├── IVariableTypeMemberSpecifications.cs │ │ ├── InstanceAwareValueSpecification.cs │ │ ├── InstanceMemberSerialization.cs │ │ ├── InstanceMemberSerializations.cs │ │ ├── InstanceMemberWalkerBase.cs │ │ ├── IsSerializableMember.cs │ │ ├── MappedAllowedMemberValues.cs │ │ ├── Member.cs │ │ ├── MemberAccess.cs │ │ ├── MemberAccessors.cs │ │ ├── MemberAssignment.cs │ │ ├── MemberContents.cs │ │ ├── MemberContext.cs │ │ ├── MemberConverterSpecification.cs │ │ ├── MemberConverters.cs │ │ ├── MemberDefaults.cs │ │ ├── MemberDescriptor.cs │ │ ├── MemberDescriptors.cs │ │ ├── MemberHandler.cs │ │ ├── MemberInnerContentHandler.cs │ │ ├── MemberListWriter.cs │ │ ├── MemberNames.cs │ │ ├── MemberOrder.cs │ │ ├── MemberSerialization.cs │ │ ├── MemberSerializationBuilder.cs │ │ ├── MemberSerializations.cs │ │ ├── MemberSerializer.cs │ │ ├── MemberSerializers.cs │ │ ├── MemberTypeSpecification.cs │ │ ├── MemberWriter.cs │ │ ├── MemberedContents.cs │ │ ├── Members.cs │ │ ├── MetadataSpecification.cs │ │ ├── PropertyMemberSerializer.cs │ │ ├── PropertyMemberSpecification.cs │ │ ├── ReadOnlyCollectionAccessors.cs │ │ ├── ReadOnlyCollectionMemberAccess.cs │ │ ├── ReadOnlyCollectionSpecification.cs │ │ ├── RegisteredMemberContents.cs │ │ ├── RuntimeMemberList.cs │ │ ├── RuntimeSerializer.cs │ │ ├── TypeMemberSource.cs │ │ ├── TypeMemberWalkerBase.cs │ │ ├── TypeMembers.cs │ │ ├── ValidMemberSpecification.cs │ │ ├── VariableTypeMemberContents.cs │ │ ├── VariableTypeMemberSpecifications.cs │ │ ├── VariableTypedMemberWriter.cs │ │ ├── WhitelistMemberPolicy.cs │ │ └── WritableMemberAccessors.cs │ ├── Properties │ │ ├── ArgumentsTypeProperty.cs │ │ ├── ConverterProperty.cs │ │ ├── DelegatedProperty.cs │ │ ├── EntityIdentity.cs │ │ ├── ExplicitTypeProperty.cs │ │ ├── FrameworkIdentity.cs │ │ ├── IProperty.cs │ │ ├── ITypePartsFormatter.cs │ │ ├── IdentityProperty.cs │ │ ├── ItemTypeProperty.cs │ │ ├── MapProperty.cs │ │ ├── MigrationVersionIdentity.cs │ │ ├── Property.cs │ │ ├── ReferenceIdentity.cs │ │ ├── TypeArguments.cs │ │ └── TypePartsFormatter.cs │ ├── ReaderAdapter.cs │ ├── Reflection │ │ ├── Activation.cs │ │ ├── AssemblyPath.cs │ │ ├── AssemblyPathParser.cs │ │ ├── AssemblyTypePartitions.cs │ │ ├── Classification.cs │ │ ├── DefaultParsingDelimiters.cs │ │ ├── DefaultTypeDefaults.cs │ │ ├── DimensionsAlteration.cs │ │ ├── DimensionsParser.cs │ │ ├── DiscoveredTypes.cs │ │ ├── GenericNameParser.cs │ │ ├── GenericTypes.cs │ │ ├── IActivation.cs │ │ ├── IAssemblyTypePartitions.cs │ │ ├── IClassification.cs │ │ ├── IDiscoveredTypes.cs │ │ ├── IGenericTypes.cs │ │ ├── INames.cs │ │ ├── IPartitionedTypeSpecification.cs │ │ ├── IReflectionParser.cs │ │ ├── ITypeCandidates.cs │ │ ├── ITypeDefaults.cs │ │ ├── ITypeFormatter.cs │ │ ├── ITypeIdentities.cs │ │ ├── ITypeMemberDefaults.cs │ │ ├── ITypePartReflector.cs │ │ ├── ITypePartResolver.cs │ │ ├── ITypes.cs │ │ ├── IVariableTypeSpecification.cs │ │ ├── Identifier.cs │ │ ├── Identity.cs │ │ ├── IdentityPartitionedTypeCandidates.cs │ │ ├── Key.cs │ │ ├── MemberParts.cs │ │ ├── MemberPartsParser.cs │ │ ├── Names.cs │ │ ├── ObjectTypeWalker.cs │ │ ├── PartitionedTypeCandidates.cs │ │ ├── PartitionedTypeSpecification.cs │ │ ├── ReflectionParser.cs │ │ ├── TypeCandidates.cs │ │ ├── TypeDefaults.cs │ │ ├── TypeFormatter.cs │ │ ├── TypeIdentities.cs │ │ ├── TypeLoader.cs │ │ ├── TypeMemberDefaults.cs │ │ ├── TypeNameAlteration.cs │ │ ├── TypeNameFormatter.cs │ │ ├── TypeParser.cs │ │ ├── TypePartMapper.cs │ │ ├── TypePartReflector.cs │ │ ├── TypePartResolver.cs │ │ ├── TypePartitions.cs │ │ ├── TypePartsList.cs │ │ ├── TypePartsParser.cs │ │ ├── TypedParsingReader.cs │ │ ├── Types.cs │ │ ├── VariableTypeSpecification.cs │ │ └── VariableTypeWalker.cs │ ├── RuntimeSerialization.cs │ ├── RuntimeSerializationExceptionMessage.cs │ ├── RuntimeSerializer.cs │ ├── RuntimeSerializers.cs │ ├── Serializer.cs │ ├── SerializerAdapter.cs │ ├── TrackingReader.cs │ └── WriterAdapter.cs │ ├── Core │ ├── AllInterfaces.cs │ ├── CompositeCommand.cs │ ├── ConditionMonitor.cs │ ├── ConditionMonitorState.cs │ ├── ConditionalCommand.cs │ ├── Conditions.cs │ ├── DefaultClrDelimiters.cs │ ├── Delimiter.cs │ ├── DictionaryPairTypes.cs │ ├── EmptyCommand.cs │ ├── Extensions.cs │ ├── IAllInterfaces.cs │ ├── ICommand.cs │ ├── IConditions.cs │ ├── ISortAware.cs │ ├── ITypedSortOrder.cs │ ├── KeyedByTypeCollection.cs │ ├── ListAdapter.cs │ ├── MetadataDictionary.cs │ ├── ObjectIdGenerator.cs │ ├── ObjectWalkerBase.cs │ ├── Pairs.cs │ ├── Parsing │ │ ├── CharacterParser.cs │ │ ├── CodeIdentifier.cs │ │ ├── DelegatedParser.cs │ │ ├── Extensions.cs │ │ ├── IParser.cs │ │ ├── IParsing.cs │ │ ├── Identifier.cs │ │ ├── Inputs.cs │ │ ├── ItemsParser.cs │ │ └── Parsing.cs │ ├── SelectedCommand.cs │ ├── ServiceProvider.cs │ ├── SortComparer.cs │ ├── Sources │ │ ├── AlterationAdapter.cs │ │ ├── AlteredSource.cs │ │ ├── AlteredSpecification.cs │ │ ├── Cache.cs │ │ ├── CacheBase.cs │ │ ├── CachingAlteration.cs │ │ ├── CoercedParameter.cs │ │ ├── CoercedResult.cs │ │ ├── CompositeAlteration.cs │ │ ├── ConditionalSource.cs │ │ ├── ConfiguringAlteration.cs │ │ ├── DecoratedSource.cs │ │ ├── Defaults.cs │ │ ├── DelegatedAlteration.cs │ │ ├── DelegatedFormatter.cs │ │ ├── DelegatedSource.cs │ │ ├── Enumerable.cs │ │ ├── FirstAssignedSource.cs │ │ ├── FixedInstanceSource.cs │ │ ├── FixedSource.cs │ │ ├── IAlteration.cs │ │ ├── IAssignable.cs │ │ ├── ICommandSelector.cs │ │ ├── IFinish.cs │ │ ├── IFormatter.cs │ │ ├── IItems.cs │ │ ├── IParameterizedSource.cs │ │ ├── ISource.cs │ │ ├── ISpecificationSource.cs │ │ ├── IStart.cs │ │ ├── ITableSource.cs │ │ ├── Items.cs │ │ ├── ItemsBase.cs │ │ ├── LinkedDecoratedSource.cs │ │ ├── QuotedAlteration.cs │ │ ├── ReferenceCache.cs │ │ ├── ReferenceCacheBase.cs │ │ ├── ReferenceCachingAlteration.cs │ │ ├── Self.cs │ │ ├── SingletonSource.cs │ │ ├── SpecificationSource.cs │ │ ├── StructureCache.cs │ │ ├── StructureCacheBase.cs │ │ ├── TableAssignment.cs │ │ ├── TableSource.cs │ │ └── TypeComparer.cs │ ├── Specifications │ │ ├── AllSpecification.cs │ │ ├── AlteredValueSpecification.cs │ │ ├── AlwaysSpecification.cs │ │ ├── AnySpecification.cs │ │ ├── AssignedSpecification.cs │ │ ├── ConditionalSpecification.cs │ │ ├── ContainsSpecification.cs │ │ ├── DecoratedSpecification.cs │ │ ├── DefaultValueSpecification.cs │ │ ├── DelegatedAssignedSpecification.cs │ │ ├── DelegatedSpecification.cs │ │ ├── EqualitySpecification.cs │ │ ├── ISpecification.cs │ │ ├── InstanceConditionalSpecification.cs │ │ ├── InverseSpecification.cs │ │ ├── NullAwareSpecificationAdapter.cs │ │ └── SpecificationAdapter.cs │ └── TypedSortOrder.cs │ ├── DecoratedSerializer.cs │ ├── ExtendedXmlSerializer.csproj │ ├── ExtendedXmlSerializer.csproj.DotSettings │ ├── ExtensionMethods.cs │ ├── ExtensionMethodsForAlteration.cs │ ├── ExtensionMethodsForAttachedProperties.cs │ ├── ExtensionMethodsForClassicSerialization.cs │ ├── ExtensionMethodsForConfiguration.cs │ ├── ExtensionMethodsForContent.cs │ ├── ExtensionMethodsForContentModel.cs │ ├── ExtensionMethodsForCoreSources.cs │ ├── ExtensionMethodsForCoreSpecifications.cs │ ├── ExtensionMethodsForEncryption.cs │ ├── ExtensionMethodsForExtensionModel.cs │ ├── ExtensionMethodsForImplicitTyping.cs │ ├── ExtensionMethodsForLocation.cs │ ├── ExtensionMethodsForRegistration.cs │ ├── ExtensionMethodsForSerialization.cs │ ├── ExtensionMethodsForXml.cs │ ├── ExtensionModel │ ├── Adapter.cs │ ├── AssociatedReaders.cs │ ├── AttachedProperties │ │ ├── AttachedMember.cs │ │ ├── AttachedPropertiesExtension.cs │ │ ├── AttachedPropertyConfiguration.cs │ │ ├── IProperty.cs │ │ ├── MemberAccess.cs │ │ ├── MemberAccessors.cs │ │ ├── Property.cs │ │ ├── ReaderFormatter.cs │ │ ├── ReferenceProperty.cs │ │ ├── StructureProperty.cs │ │ └── TypeMembers.cs │ ├── CachingExtension.cs │ ├── Coercion │ │ ├── CoercerBase.cs │ │ ├── CoercerParameter.cs │ │ ├── Coercers.cs │ │ ├── CoercionExtension.cs │ │ ├── FrameworkCoercer.cs │ │ ├── ICoercer.cs │ │ ├── ICoercers.cs │ │ ├── ICoercion.cs │ │ ├── TypeCoercer.cs │ │ └── TypeMetadataCoercer.cs │ ├── Content │ │ ├── AllowedInstancesExtension.cs │ │ ├── AllowedTypesExtension.cs │ │ ├── AlteredContentExtension.cs │ │ ├── AlteredConverters.cs │ │ ├── ConditionalContentDecoration.cs │ │ ├── ConditionalContents.cs │ │ ├── ConditionalElement.cs │ │ ├── ConditionalElementDecoration.cs │ │ ├── ContentAlteration.cs │ │ ├── ContentModelExtension.cs │ │ ├── Contents.cs │ │ ├── ContentsHistory.cs │ │ ├── ContinueOnUnknownContent.cs │ │ ├── ConverterAlterationsExtension.cs │ │ ├── ConvertersExtension.cs │ │ ├── IContentsHistory.cs │ │ ├── IReservedItems.cs │ │ ├── ISerializerComposer.cs │ │ ├── ITypedSpecifications.cs │ │ ├── ImplicitlyDefinedDefaultValueAlteration.cs │ │ ├── Members │ │ │ ├── AddAlteration.cs │ │ │ ├── AllMemberSpecifications.cs │ │ │ ├── AllMembersParameterizedActivators.cs │ │ │ ├── AllParameterizedMembersExtension.cs │ │ │ ├── AllowedMemberValuesExtension.cs │ │ │ ├── AllowedMembersExtension.cs │ │ │ ├── AlteredMemberContents.cs │ │ │ ├── AlteredMemberConverters.cs │ │ │ ├── ConstructorMembers.cs │ │ │ ├── DefaultValueTypeDefaults.cs │ │ │ ├── EnumerableSupportExtension.cs │ │ │ ├── IAllowedMembersExtension.cs │ │ │ ├── IConstructorMembers.cs │ │ │ ├── IMemberLocators.cs │ │ │ ├── IMemberSpecification.cs │ │ │ ├── IMemberSpecifications.cs │ │ │ ├── IMetadataLocator.cs │ │ │ ├── IParameterizedMembers.cs │ │ │ ├── IsField.cs │ │ │ ├── IsValidMemberType.cs │ │ │ ├── IsWritable.cs │ │ │ ├── MemberExceptionHandlingExtension.cs │ │ │ ├── MemberLocators.cs │ │ │ ├── MemberModelExtension.cs │ │ │ ├── MemberPropertiesExtension.cs │ │ │ ├── MemberSpecification.cs │ │ │ ├── MemberSpecifications.cs │ │ │ ├── MetadataLocator.cs │ │ │ ├── ParameterizedActivators.cs │ │ │ ├── ParameterizedAwareTypeDefaults.cs │ │ │ ├── ParameterizedConstructorSpecification.cs │ │ │ ├── ParameterizedMember.cs │ │ │ ├── ParameterizedMemberAccessors.cs │ │ │ ├── ParameterizedMembers.cs │ │ │ ├── ParameterizedMembersExtension.cs │ │ │ ├── ParameterizedResultHandler.cs │ │ │ ├── ParameterizedTypeMembers.cs │ │ │ └── RuntimeSerializationExceptionMessage.cs │ │ ├── ReaderContextExtension.cs │ │ ├── RegisteredCompositionExtension.cs │ │ ├── SerializerComposer.cs │ │ ├── ThrowOnUnknownContent.cs │ │ ├── UnknownContentHandlingExtension.cs │ │ └── VersionConverter.cs │ ├── DecorateAlteration.cs │ ├── DefaultExtensions.cs │ ├── Defaults.cs │ ├── Encryption │ │ ├── Decrypt.cs │ │ ├── Encrypt.cs │ │ ├── EncryptedConverter.cs │ │ ├── Encryption.cs │ │ ├── EncryptionConverterAlteration.cs │ │ ├── EncryptionExtension.cs │ │ ├── IDecrypt.cs │ │ ├── IEncrypt.cs │ │ └── IEncryption.cs │ ├── Expressions │ │ ├── Evaluation.cs │ │ ├── Evaluator.cs │ │ ├── Expression.cs │ │ ├── ExpressionBase.cs │ │ ├── ExpressionEvaluator.cs │ │ ├── ExpressionsExtension.cs │ │ ├── FixedExpression.cs │ │ ├── GeneralExpression.cs │ │ ├── IEvaluation.cs │ │ ├── IEvaluator.cs │ │ ├── IExpression.cs │ │ ├── IExpressionEvaluator.cs │ │ └── LiteralExpression.cs │ ├── FallbackSerializationExtension.cs │ ├── FixedRegistration.cs │ ├── GeneratedListAwareExtension.cs │ ├── GeneratedSubstitute.cs │ ├── IRegistration.cs │ ├── IRootInstances.cs │ ├── ISerializerExtension.cs │ ├── IServiceProvider.cs │ ├── IServiceRepository.cs │ ├── IServices.cs │ ├── Instances │ │ ├── DefaultSerializationMonitor.cs │ │ ├── Existing.cs │ │ ├── ExistingInstanceExtension.cs │ │ ├── IInstanceReader.cs │ │ ├── IInstances.cs │ │ ├── ISerializationInterceptor.cs │ │ ├── ISerializationMonitor.cs │ │ ├── InstanceReader.cs │ │ ├── InstanceReaders.cs │ │ ├── Instances.cs │ │ ├── SerializationActivator.cs │ │ ├── SerializationInterceptionExtension.cs │ │ ├── SerializationInterceptor.cs │ │ └── SerializationMonitorExtension.cs │ ├── IsGeneratedList.cs │ ├── Markup │ │ ├── ContainedExpression.cs │ │ ├── Contents.cs │ │ ├── Enhancer.cs │ │ ├── EscapedLiteral.cs │ │ ├── IEnhancer.cs │ │ ├── IMarkupExtension.cs │ │ ├── IMarkupExtensionPartsEvaluator.cs │ │ ├── IMarkupExtensions.cs │ │ ├── IValidConstructorSpecification.cs │ │ ├── MarkupExtension.cs │ │ ├── MarkupExtensionAwareConverter.cs │ │ ├── MarkupExtensionAwareSerializer.cs │ │ ├── MarkupExtensionConverterAlteration.cs │ │ ├── MarkupExtensionExpression.cs │ │ ├── MarkupExtensionParser.cs │ │ ├── MarkupExtensionParts.cs │ │ ├── MarkupExtensionPartsEvaluator.cs │ │ ├── MarkupExtensionPartsExpression.cs │ │ ├── MarkupExtensions.cs │ │ ├── NullExtension.cs │ │ ├── Property.cs │ │ ├── Serializers.cs │ │ ├── StaticExtension.cs │ │ ├── TextLiteral.cs │ │ ├── TypeExtension.cs │ │ └── ValidMarkupExtensionConstructor.cs │ ├── RecursionAwareExtension.cs │ ├── References │ │ ├── AssociationAwareReferenceMaps.cs │ │ ├── BlacklistReferencesPolicy.cs │ │ ├── CircularReferencesDetectedException.cs │ │ ├── ContainsStaticReferenceSpecification.cs │ │ ├── ContentsContext.cs │ │ ├── DefaultReferencesExtension.cs │ │ ├── DeferredCollectionAssignmentCommand.cs │ │ ├── DeferredCommands.cs │ │ ├── DeferredContents.cs │ │ ├── DeferredEncounters.cs │ │ ├── DeferredMemberAssignmentCommand.cs │ │ ├── DeferredReferenceContent.cs │ │ ├── DeferredReferenceContents.cs │ │ ├── DeferredReferenceEncounters.cs │ │ ├── DeferredReferenceMap.cs │ │ ├── DeferredReferenceMaps.cs │ │ ├── DeferredReferenceSerializer.cs │ │ ├── DeferredReferenceSerializers.cs │ │ ├── DeferredReferencesExtension.cs │ │ ├── Encounters.cs │ │ ├── Entities.cs │ │ ├── Entity.cs │ │ ├── ExecuteDeferredCommandsCommand.cs │ │ ├── IContentsContext.cs │ │ ├── IDeferredCommand.cs │ │ ├── IDeferredCommands.cs │ │ ├── IEncounters.cs │ │ ├── IEntities.cs │ │ ├── IEntity.cs │ │ ├── IEntityMembers.cs │ │ ├── IMultipleReferencesAllowed.cs │ │ ├── IReferenceEncounters.cs │ │ ├── IReferenceMap.cs │ │ ├── IReferenceMaps.cs │ │ ├── IReferenceView.cs │ │ ├── IReferences.cs │ │ ├── IReferencesPolicy.cs │ │ ├── IRootReferences.cs │ │ ├── IStaticReferenceSpecification.cs │ │ ├── ITrackedLists.cs │ │ ├── Identifier.cs │ │ ├── IsReferenceSpecification.cs │ │ ├── MultipleReferencesAllowed.cs │ │ ├── MultipleReferencesDetectedException.cs │ │ ├── ProcessReference.cs │ │ ├── ProcessReferenceInput.cs │ │ ├── ReferenceActivation.cs │ │ ├── ReferenceAwareSerializers.cs │ │ ├── ReferenceBoundary.cs │ │ ├── ReferenceContents.cs │ │ ├── ReferenceDetectionAwareSerialization.cs │ │ ├── ReferenceEncounters.cs │ │ ├── ReferenceIdentity.cs │ │ ├── ReferenceMap.cs │ │ ├── ReferenceMaps.cs │ │ ├── ReferenceReader.cs │ │ ├── ReferenceResult.cs │ │ ├── ReferenceSerializer.cs │ │ ├── ReferenceSet.cs │ │ ├── ReferenceView.cs │ │ ├── ReferenceWalker.cs │ │ ├── ReferencesDetectedException.cs │ │ ├── ReferencesExtension.cs │ │ ├── ReservedItems.cs │ │ ├── RootReferences.cs │ │ ├── StaticReferenceCheckingExtension.cs │ │ ├── TrackedLists.cs │ │ └── WhitelistReferencesPolicy.cs │ ├── Registration.cs │ ├── Registrations.cs │ ├── RootInstanceExtension.cs │ ├── RootInstances.cs │ ├── SerializationExtension.cs │ ├── ServiceProviderExtensions.cs │ ├── Services.cs │ ├── SurrogatesExtension.cs │ ├── ThreadAwareRecursionContentExtension.cs │ ├── ThreadProtectionExtension.cs │ ├── Types │ │ ├── ActivationContext.cs │ │ ├── ActivationContextActivator.cs │ │ ├── ActivationContexts.cs │ │ ├── Activators.cs │ │ ├── AllConstructors.cs │ │ ├── AllConstructorsExtension.cs │ │ ├── ConstructorQuery.cs │ │ ├── ConstructorSelector.cs │ │ ├── DescendingConstructorQuery.cs │ │ ├── IActivationAware.cs │ │ ├── IActivationContext.cs │ │ ├── IActivationContexts.cs │ │ ├── IQueriedConstructors.cs │ │ ├── ISingletonCandidates.cs │ │ ├── ISingletonLocator.cs │ │ ├── ISingletons.cs │ │ ├── ITypeAware.cs │ │ ├── ImmutableArrayAwareGenericTypes.cs │ │ ├── ImmutableArrayContents.cs │ │ ├── ImmutableArrayExtension.cs │ │ ├── ImmutableArrays.cs │ │ ├── ImmutableDictionariesExtension.cs │ │ ├── ImmutableHashSetExtension.cs │ │ ├── ImmutableListExtension.cs │ │ ├── ImmutableSortedDictionariesExtension.cs │ │ ├── ImmutableSortedSetExtension.cs │ │ ├── NullableStructureAwareExtension.cs │ │ ├── QueriedConstructors.cs │ │ ├── SingletonActivationExtension.cs │ │ ├── SingletonCandidates.cs │ │ ├── SingletonLocator.cs │ │ ├── Singletons.cs │ │ ├── Sources │ │ │ ├── AllAssemblyTypes.cs │ │ │ ├── AllTypesInSameNamespace.cs │ │ │ ├── InspectedPropertyTypes.cs │ │ │ ├── NestedTypes.cs │ │ │ ├── PublicAssemblyTypes.cs │ │ │ ├── PublicNestedTypes.cs │ │ │ ├── PublicTypesInSameNamespace.cs │ │ │ └── TypesInSameNamespace.cs │ │ ├── TypeModelExtension.cs │ │ └── TypeNamesExtension.cs │ └── Xml │ │ ├── Activated.cs │ │ ├── ActivatedSerializer.cs │ │ ├── ActivatedXmlSerializer.cs │ │ ├── AttributeSpecifications.cs │ │ ├── AutoMemberFormatExtension.cs │ │ ├── Classic │ │ ├── ClassicAllowedMemberValues.cs │ │ ├── ClassicCollectionContents.cs │ │ ├── ClassicCollections.cs │ │ ├── ClassicDictionaryContents.cs │ │ ├── ClassicExtension.cs │ │ ├── ClassicIdentificationExtension.cs │ │ ├── ClassicListNamingExtension.cs │ │ ├── ClassicSerializationAdapter.cs │ │ ├── ITypeIdentification.cs │ │ ├── ITypeIdentifications.cs │ │ ├── ITypeIdentity.cs │ │ ├── ITypeIdentityRegistrations.cs │ │ ├── Identifiers.cs │ │ ├── SchemaTypeExtension.cs │ │ ├── TypeIdentification.cs │ │ ├── TypeIdentifications.cs │ │ ├── TypeIdentities.cs │ │ ├── TypeIdentity.cs │ │ ├── TypeIdentityRegistrations.cs │ │ ├── XmlRootIdentity.cs │ │ └── XmlTypeIdentity.cs │ │ ├── CloseSettings.cs │ │ ├── ContainsCustomSerialization.cs │ │ ├── CustomSerializationExtension.cs │ │ ├── CustomSerializers.cs │ │ ├── CustomXmlSerializers.cs │ │ ├── DeclaredMemberNames.cs │ │ ├── DeclaredNames.cs │ │ ├── DefaultMemberOrder.cs │ │ ├── DefaultMetadataSpecification.cs │ │ ├── DefaultPrefix.cs │ │ ├── DefaultXmlContentsActivator.cs │ │ ├── DefaultXmlElementAttribute.cs │ │ ├── Defaults.cs │ │ ├── ElementSpecification.cs │ │ ├── ExtendedXmlCustomSerializer.cs │ │ ├── ExtendedXmlSerializer.cs │ │ ├── FormatReaderContext.cs │ │ ├── FormatReaderContexts.cs │ │ ├── FormatReaders.cs │ │ ├── FormatWriters.cs │ │ ├── FormattedContentSpecification.cs │ │ ├── IContainsCustomSerialization.cs │ │ ├── ICustomMemberSerializers.cs │ │ ├── ICustomSerializers.cs │ │ ├── ICustomXmlSerializers.cs │ │ ├── IExtendedXmlCustomSerializer.cs │ │ ├── IInstanceFormatter.cs │ │ ├── IObjectIdentifiers.cs │ │ ├── IPrefix.cs │ │ ├── IPrefixes.cs │ │ ├── IRead.cs │ │ ├── ISerializer.cs │ │ ├── IWrite.cs │ │ ├── IXmlContentsActivator.cs │ │ ├── IXmlParserContexts.cs │ │ ├── IXmlReaderFactory.cs │ │ ├── IXmlWriterFactory.cs │ │ ├── IdentifierCommand.cs │ │ ├── IdentityMapper.cs │ │ ├── ImplicitIdentities.cs │ │ ├── ImplicitTypeIdentities.cs │ │ ├── ImplicitTypingExtension.cs │ │ ├── InstanceFormatter.cs │ │ ├── MemberCustomSerializers.cs │ │ ├── MemberFormatExtension.cs │ │ ├── MemberSpecification.cs │ │ ├── Members.cs │ │ ├── Metadata.cs │ │ ├── Migrations.cs │ │ ├── MigrationsExtension.cs │ │ ├── ObjectIdentifiers.cs │ │ ├── OptimizedNamespaceExtension.cs │ │ ├── OptimizedNamespaceXmlWriter.cs │ │ ├── OptimizedWriters.cs │ │ ├── Prefix.cs │ │ ├── PrefixRegistryExtension.cs │ │ ├── Prefixes.cs │ │ ├── PropertyMigration.cs │ │ ├── Read.cs │ │ ├── ReaderFormatter.cs │ │ ├── Serializer.cs │ │ ├── ValidContentCharacters.cs │ │ ├── Write.cs │ │ ├── XmlAttributes.cs │ │ ├── XmlContent.cs │ │ ├── XmlContentsActivatorSelector.cs │ │ ├── XmlDepth.cs │ │ ├── XmlElements.cs │ │ ├── XmlInnerContent.cs │ │ ├── XmlInnerContentActivation.cs │ │ ├── XmlInnerContentActivator.cs │ │ ├── XmlListContentsActivator.cs │ │ ├── XmlListInnerContent.cs │ │ ├── XmlParserContexts.cs │ │ ├── XmlReader.cs │ │ ├── XmlReaderFactory.cs │ │ ├── XmlSerializationExtension.cs │ │ ├── XmlTextExtension.cs │ │ ├── XmlWriter.cs │ │ └── XmlWriterFactory.cs │ ├── IExtendedXmlSerializer.cs │ ├── Properties │ └── AssemblyInfo.cs │ └── ReflectionModel │ ├── AccountForNullableAlteration.cs │ ├── ActivatedTypeSpecification.cs │ ├── ActivatingTypeSpecification.cs │ ├── Activator.cs │ ├── AddDelegates.cs │ ├── AddItemsCommand.cs │ ├── AddMethodLocator.cs │ ├── AlteringActivator.cs │ ├── ApplicationTypeSpecification.cs │ ├── ApplicationTypes.cs │ ├── ApplyMemberValuesCommand.cs │ ├── ArrayDimensions.cs │ ├── ArrayTypeDimensions.cs │ ├── AssemblyLoader.cs │ ├── AssemblyPath.cs │ ├── AssemblyProvider.cs │ ├── AssemblyPublicTypes.cs │ ├── AssemblyTypes.cs │ ├── CollectionAwareConstructorLocator.cs │ ├── CollectionItemTypeLocator.cs │ ├── CompositeTypeComparer.cs │ ├── ConstructedActivator.cs │ ├── ConstructedActivators.cs │ ├── ConstructorLocator.cs │ ├── Constructors.cs │ ├── DefaultConstructedActivators.cs │ ├── DefaultValues.cs │ ├── Defaults.cs │ ├── DictionaryAdapters.cs │ ├── DictionaryAddDelegates.cs │ ├── DictionaryConstructorLocator.cs │ ├── DictionaryEnumerators.cs │ ├── DictionaryPairTypesLocator.cs │ ├── EnumerableCoercer.cs │ ├── EnumeratorStore.cs │ ├── Enumerators.cs │ ├── Extensions.cs │ ├── Fields.cs │ ├── FixedTypeSpecification.cs │ ├── Generic.cs │ ├── GenericActivation.cs │ ├── GenericActivators.cs │ ├── GenericAdapterBase.cs │ ├── GenericDefinitionCandidates.cs │ ├── GenericSingleton.cs │ ├── GenericTypeAlteration.cs │ ├── GetterFactory.cs │ ├── IActivatingTypeSpecification.cs │ ├── IActivator.cs │ ├── IActivators.cs │ ├── IAddDelegates.cs │ ├── IAddMethodLocator.cs │ ├── IApplicationTypes.cs │ ├── IAssemblyLoader.cs │ ├── IAssemblyProvider.cs │ ├── IAssemblyTypes.cs │ ├── ICollectionItemTypeLocator.cs │ ├── IConstructorLocator.cs │ ├── IConstructors.cs │ ├── IDictionaryEnumerators.cs │ ├── IDictionaryPairTypesLocator.cs │ ├── IEnumeratorStore.cs │ ├── IEnumerators.cs │ ├── IFields.cs │ ├── IGeneric.cs │ ├── IGenericActivation.cs │ ├── IGenericAware.cs │ ├── IGenericDefinitionCandidates.cs │ ├── IGetterFactory.cs │ ├── IInterfaceIdentities.cs │ ├── IMemberComparer.cs │ ├── IMemberTable.cs │ ├── IMetadataTable.cs │ ├── IProperties.cs │ ├── ISetterFactory.cs │ ├── ITypeComparer.cs │ ├── ITypePartitions.cs │ ├── ITypedTable.cs │ ├── IValidConstructorSpecification.cs │ ├── ImplementedTypeComparer.cs │ ├── InheritedMemberComparer.cs │ ├── InheritedTypeComparer.cs │ ├── InterfaceIdentities.cs │ ├── IsAnonymousType.cs │ ├── IsArraySpecification.cs │ ├── IsAssignableGenericSpecification.cs │ ├── IsAssignableSpecification.cs │ ├── IsCollectionTypeExpandedSpecification.cs │ ├── IsCollectionTypeSpecification.cs │ ├── IsDefinedSpecification.cs │ ├── IsDictionaryTypeSpecification.cs │ ├── IsGenericDefinitionSpecification.cs │ ├── IsGenericDictionarySpecification.cs │ ├── IsGenericTypeSpecification.cs │ ├── IsInstanceOfTypeSpecification.cs │ ├── IsInterface.cs │ ├── IsTypeSpecification.cs │ ├── IsUnspeakable.cs │ ├── IsValueTypeSpecification.cs │ ├── ListConstructorLocator.cs │ ├── MemberComparer.cs │ ├── MemberTable.cs │ ├── NamespaceSpecification.cs │ ├── Partition.cs │ ├── Properties.cs │ ├── PublicConstructorLocator.cs │ ├── RootType.cs │ ├── SelectCoercer.cs │ ├── SetterFactory.cs │ ├── Support.cs │ ├── TypeCoercer.cs │ ├── TypeDefinitionIdentityComparer.cs │ ├── TypeEqualitySpecification.cs │ ├── TypeIdentityComparer.cs │ ├── TypeIdentityComparerBase.cs │ ├── TypeMetadataCoercer.cs │ ├── TypePartition.cs │ ├── TypedTable.cs │ ├── ValidConstructorSpecification.cs │ └── VariableTypeSpecification.cs └── test ├── .External └── VweCore │ ├── Abstractions │ ├── ICustomDelete.cs │ ├── IEntity.cs │ ├── ILineSegment.cs │ ├── IMovable.cs │ ├── IPositionable.cs │ ├── IRelativelyPositionable.cs │ ├── IRelativelyRotatable.cs │ └── IRotatable.cs │ ├── CurveType.cs │ ├── Entity.cs │ ├── EntityOrderIndex.cs │ ├── FrameworkExtensions │ ├── BaseObservable.cs │ ├── CollectionExtensions.cs │ ├── IObservable.cs │ ├── NullableAttributes.cs │ └── StringExtensions.cs │ ├── Geometry │ ├── AxisDirections.cs │ ├── Circle2D.cs │ ├── ICurrentPointObserver.cs │ ├── ICurrentPointSource.cs │ ├── LeveledRectangle.cs │ ├── LineEquation.cs │ ├── LineSegment2D.cs │ ├── MapExtensions.cs │ ├── MathExtensions.cs │ ├── Point2D.cs │ ├── Ray2D.cs │ ├── Rectangle2D.cs │ ├── SlopeInterceptEquation.cs │ └── Tolerance.cs │ ├── HallwayNode.cs │ ├── Map.Entities.cs │ ├── Map.cs │ ├── MarkerPoint.cs │ ├── Node.cs │ ├── NodeLink.cs │ ├── NodeLinkDirection.cs │ ├── NodeLinkDrivingDirection.cs │ ├── Obstacle.cs │ ├── Reflector.cs │ ├── SharedAssemblyInfo.cs │ ├── StorageLocation.cs │ ├── StorageRow.cs │ ├── TagNode.cs │ ├── Translations │ ├── DefaultTranslator.cs │ ├── ITranslator.cs │ ├── TranslationKeys.cs │ ├── Translator.cs │ └── TranslatorExtensions.cs │ ├── VirtualPoint.cs │ ├── VirtualPointOrigin.cs │ ├── VweCore.csproj │ ├── VweCore.csproj.DotSettings │ └── Xml │ └── XmlSerializer.cs ├── ExtendedXmlSerializer.Tests.Performance ├── ExtendedXmlSerializer.Tests.Performance.csproj ├── ExtendedXmlSerializerTest.cs ├── LegacyExtendedXmlSerializerTest.cs ├── Model │ └── TestClassPrimitiveTypes.cs ├── Program.cs ├── Properties │ └── AssemblyInfo.cs └── XmlSerializerTest.cs ├── ExtendedXmlSerializer.Tests.ReportedIssues.Issue502 ├── ExtendedXmlSerializer.Tests.ReportedIssues.Issue502.csproj ├── Issue502Tests.cs └── TestMapFactory.cs ├── ExtendedXmlSerializer.Tests.ReportedIssues ├── ExtendedXmlSerializer.Tests.ReportedIssues.csproj ├── ExtendedXmlSerializer.Tests.ReportedIssues.csproj.DotSettings ├── Issue125Tests.cs ├── Issue128Tests.cs ├── Issue132Tests.cs ├── Issue134Tests.cs ├── Issue141Tests.cs ├── Issue143Tests.cs ├── Issue144Tests.cs ├── Issue145Tests.cs ├── Issue146Tests.cs ├── Issue148Tests.cs ├── Issue150Tests.cs ├── Issue152Tests.cs ├── Issue153Tests.cs ├── Issue154Tests.cs ├── Issue155Tests.cs ├── Issue156Tests.cs ├── Issue157Tests.cs ├── Issue161Tests.cs ├── Issue163Tests.cs ├── Issue167Tests.cs ├── Issue170Tests.cs ├── Issue171Tests.cs ├── Issue172Tests.cs ├── Issue173Tests.cs ├── Issue174Tests.cs ├── Issue175Tests.cs ├── Issue176Tests.cs ├── Issue178Tests.cs ├── Issue180Tests.cs ├── Issue181Tests.cs ├── Issue182Tests.cs ├── Issue183Tests.cs ├── Issue186Tests.cs ├── Issue190Tests.cs ├── Issue191Tests.cs ├── Issue192Tests.cs ├── Issue193Tests.cs ├── Issue194Tests.cs ├── Issue196Tests.cs ├── Issue197Tests.cs ├── Issue198Tests.cs ├── Issue199Tests.cs ├── Issue200Tests.cs ├── Issue201Tests.cs ├── Issue202Tests.cs ├── Issue203Tests.cs ├── Issue205Tests.cs ├── Issue206Tests.cs ├── Issue206TestsExtensive.cs ├── Issue207Tests.cs ├── Issue208Tests.cs ├── Issue211Tests.cs ├── Issue212Tests.cs ├── Issue213Tests.cs ├── Issue214Tests.cs ├── Issue215Tests.cs ├── Issue216Tests.cs ├── Issue217Tests.cs ├── Issue218Tests.cs ├── Issue227Tests.cs ├── Issue230Tests.cs ├── Issue231Tests.cs ├── Issue232Tests.cs ├── Issue237Tests.cs ├── Issue238Tests.cs ├── Issue239Tests.cs ├── Issue241Tests.cs ├── Issue242Tests.cs ├── Issue243Tests.cs ├── Issue245Tests.cs ├── Issue246Tests.cs ├── Issue248Tests.cs ├── Issue249Tests.cs ├── Issue250Tests.cs ├── Issue253Tests.cs ├── Issue255Tests.cs ├── Issue256Tests.cs ├── Issue257Tests.cs ├── Issue258Tests.cs ├── Issue260Tests.cs ├── Issue261Tests.cs ├── Issue263Tests.cs ├── Issue264Tests.cs ├── Issue265Tests.cs ├── Issue266Tests.cs ├── Issue268Tests.cs ├── Issue271Tests.cs ├── Issue274Tests.cs ├── Issue282Tests.cs ├── Issue282Tests_Converters.cs ├── Issue282Tests_Extension.cs ├── Issue282Tests_Monitor.cs ├── Issue282Tests_Profiles.cs ├── Issue282Tests_README.cs ├── Issue288Tests.cs ├── Issue337Tests.cs ├── Issue340Tests.cs ├── Issue341Tests.cs ├── Issue346Tests.cs ├── Issue346Tests_Custom.cs ├── Issue349Tests.cs ├── Issue352Tests.cs ├── Issue355Tests.cs ├── Issue358Tests.cs ├── Issue358Tests_Extended.cs ├── Issue361Tests.cs ├── Issue366Tests.cs ├── Issue372Tests.cs ├── Issue374Tests.cs ├── Issue375Tests.cs ├── Issue377Tests.cs ├── Issue386Tests.cs ├── Issue392Tests.cs ├── Issue393Tests.cs ├── Issue396Tests.cs ├── Issue397Tests.cs ├── Issue398Tests.cs ├── Issue401Tests.cs ├── Issue403Tests.cs ├── Issue407Tests.cs ├── Issue411Tests.cs ├── Issue414Tests.cs ├── Issue416Tests.cs ├── Issue416Tests_Extended.cs ├── Issue418Tests.cs ├── Issue418Tests_Extended.cs ├── Issue423Tests.cs ├── Issue427Tests.cs ├── Issue431Tests.cs ├── Issue434Tests.cs ├── Issue434Tests_Extended.cs ├── Issue440Tests.cs ├── Issue442Tests.cs ├── Issue443Tests.cs ├── Issue445Tests.cs ├── Issue447Tests.cs ├── Issue451Tests.cs ├── Issue451Tests_Reported.cs ├── Issue454Tests.cs ├── Issue458Tests.cs ├── Issue463Tests.cs ├── Issue470Tests.cs ├── Issue473Tests.cs ├── Issue475Tests.cs ├── Issue477Tests.cs ├── Issue477Tests_Extended.cs ├── Issue479Tests.cs ├── Issue483Tests.cs ├── Issue485Tests.cs ├── Issue485Tests_Extended.cs ├── Issue491Tests.cs ├── Issue497Tests.cs ├── Issue507Tests.cs ├── Issue509Tests.cs ├── Issue511Tests.cs ├── Issue513Tests.cs ├── Issue515Tests.cs ├── Issue517Tests.cs ├── Issue521Tests.cs ├── Issue528Tests.cs ├── Issue530Tests.cs ├── Issue532Tests.cs ├── Issue538Tests.cs ├── Issue545Tests.cs ├── Issue550Tests.cs ├── Issue558Tests.cs ├── Issue561Tests.cs ├── Issue563Tests.cs ├── Issue565Tests.cs ├── Issue565Tests_Extended.cs ├── Issue565Tests_Extended_II.cs ├── Issue565Tests_Extended_III.cs ├── Issue571Tests.cs ├── Issue583Tests.cs ├── Issue584Tests.cs ├── Issue599Tests.cs ├── Issue604Tests.cs ├── Issue608Tests.cs ├── Issue612Tests.cs ├── Issue614Tests.cs ├── Issue630Tests.cs ├── Issue637Tests.cs ├── Issue644Tests.cs ├── Issue645Tests.cs ├── Issue98Tests.cs ├── Properties │ └── AssemblyInfo.cs ├── Shared │ ├── DmDev.cs │ ├── Inspections.cs │ ├── Issue442 │ │ ├── IDeviceTemplate.cs │ │ ├── SiemensDeviceTemplate.cs │ │ └── WatchAndForceTableTemplate.cs │ ├── Issue517 │ │ └── Class1.cs │ ├── Pathogen.cs │ ├── PathogenDto.cs │ ├── PathogenType.cs │ ├── PathogenTypeDto.cs │ ├── VerbasResc.cs │ └── Worker.cs └── Support │ ├── ClassicSerialization.cs │ ├── Extensions.cs │ ├── ISerializationSupport.cs │ ├── SerializationSupport.cs │ └── ServicesSupport.cs └── ExtendedXmlSerializer.Tests ├── Configuration └── ConfigurationContainerTests.cs ├── ContentModel ├── Collections │ ├── CollectionContentOptionTests.cs │ └── CollectionWithMembersInnerContentHandlerTests.cs ├── Conversion │ ├── ByteArrayConverterTests.cs │ └── UriConverterTests.cs ├── Members │ ├── AllowedAssignedInstanceValuesTests.cs │ ├── AttributeSpecificationTests.cs │ ├── BlacklistMemberPolicyTests.cs │ └── MemberSerializationsTests.cs ├── Properties │ └── TypePartsFormatterTests.cs └── Reflection │ ├── PartitionedTypeCandidatesTests.cs │ ├── TypePartResolverTests.cs │ └── TypePartsParserTests.cs ├── ExtendedXmlSerializer.Tests.csproj ├── ExtensionModel ├── AttachedProperties │ └── AttachedPropertiesExtensionTests.cs ├── Content │ ├── ConverterAlterationsExtensionTests.cs │ ├── ConverterRegistryExtensionTests.cs │ ├── ImplicitlyDefinedDefaultValueAlterationTests.cs │ └── Members │ │ ├── AllowedMembersExtensionTests.cs │ │ └── ParameterizedMembersExtensionTests.cs ├── Encryption │ └── EncryptionExtensionTests.cs ├── Markup │ ├── MarkupExtensionParserTests.cs │ └── MarkupExtensionTests.cs ├── References │ ├── ContainsStaticReferenceSpecificationTests.cs │ ├── DeferredReferencesExtensionTests.cs │ └── ReferencesExtensionTests.cs ├── Types │ ├── AllConstructorsExtensionTests.cs │ ├── ImmutableArrayExtensionTests.cs │ └── Sources │ │ └── InspectedPropertyTypesTests.cs └── Xml │ ├── AutoMemberFormatExtensionTests.cs │ ├── Classic │ └── ClassicExtensionTests.cs │ ├── CustomXmlExtensionTests.cs │ ├── ExtendedXmlSerializerTests.cs │ ├── ExternalTests.cs │ ├── ImplicitTypingExtensionTests.cs │ ├── MemberFormatExtensionTests.cs │ ├── MigrationsExtensionTests.cs │ ├── OptimizedNamespaceExtensionTests.cs │ └── XmlReaderFactoryTests.cs ├── FuturesTest.cs ├── Properties └── AssemblyInfo.cs ├── ReflectionModel ├── ImplementedTypeComparerTests.cs ├── MemberComparerTests.cs └── TypeDefinitionIdentityComparerTests.cs ├── ReportedIssues ├── Issue240Tests.cs ├── Issue361Tests.cs └── Issue543Tests.cs ├── Support ├── ClassicSerialization.cs ├── Extensions.cs ├── ISerializationSupport.cs ├── SerializationSupport.cs └── ServicesSupport.cs ├── TestObject ├── TestClassCollection.cs ├── TestClassGeneric.cs ├── TestClassInheritance.cs ├── TestClassInheritanceWithCustomSerializer.cs ├── TestClassInheritanceWithMigrations.cs ├── TestClassOtherClass.cs ├── TestClassPrimitiveTypes.cs ├── TestClassPrimitiveTypesNullable.cs ├── TestClassPropIsInterface.cs ├── TestClassPropertyInterfaceOfList.cs ├── TestClassPropertyType.cs ├── TestClassReference.cs ├── TestClassTimeSpan.cs ├── TestClassWithArray.cs ├── TestClassWithEncryptedData.cs ├── TestClassWithHashSet.cs ├── TestClassWithList.cs ├── TestClassWithListWithClass.cs ├── TestClassWithMap.cs ├── TestClassWithObjectProperty.cs ├── TestClassWithOrderParameters.cs ├── TestClassWithReadOnlyCollectionProperty.cs ├── TestClassWithSerializer.cs ├── TestClassWithXmlElementAttribute.cs ├── TestClassWithXmlRootAttribute.cs └── TestStruct.cs └── Traits.cs /.build/Prepare-Deployment.ps1: -------------------------------------------------------------------------------- 1 | choco install docfx -y 2 | Install-Module -Name PowerShellForGitHub 3 | 4 | $env:APPVEYOR_REPO_BRANCH = @{ $true = "master"; $false = $env:APPVEYOR_REPO_BRANCH; }[[bool]$env:APPVEYOR_FORCED_BUILD] 5 | git checkout $env:APPVEYOR_REPO_BRANCH -q 6 | 7 | git submodule update --rebase --remote 2>&1 8 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | # httpswww.davidlaing.com20120919customise-your-gitattributes-to-become-a-git-ninja 3 | text=auto 4 | 5 | .cs text diff=csharp -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/ask-a-question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Ask a Question 3 | about: Got a question? Ask away and we'll see if we can answer it 4 | title: '' 5 | labels: question 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /.github/issue_label_bot.yaml: -------------------------------------------------------------------------------- 1 | label-alias: 2 | bug: bug 3 | feature_request: enhancement 4 | question: question 5 | -------------------------------------------------------------------------------- /.github/pr-labeler.yml: -------------------------------------------------------------------------------- 1 | enhancement: issues/feat/* 2 | bug: issues/fix/* 3 | housekeeping: issues/chore/* 4 | documentation: issues/docs/* 5 | style: issues/style/* 6 | refactoring: issues/refactor/* 7 | performance: issues/perf/* 8 | testing: issues/test/* 9 | continuous integration: issues/ci/* 10 | revert: issues/revert/* -------------------------------------------------------------------------------- /.github/workflows/pr-labeler.yml: -------------------------------------------------------------------------------- 1 | name: PR Labeler 2 | on: 3 | pull_request: 4 | types: [opened] 5 | 6 | jobs: 7 | pr-labeler: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: TimonVS/pr-labeler-action@v3 11 | env: 12 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 13 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "documentation/conceptual/documents"] 2 | path = documentation/conceptual/documents 3 | url = https://github.com/ExtendedXmlSerializer/home.wiki.git 4 | -------------------------------------------------------------------------------- /Directory.build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /IsExternalInit.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | 3 | namespace System.Runtime.CompilerServices 4 | { 5 | [EditorBrowsable(EditorBrowsableState.Never)] 6 | internal class IsExternalInit{} 7 | } 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendedXmlSerializer/home/b46e8b34e124ef960c97292983653df5c5cf8f55/LICENSE -------------------------------------------------------------------------------- /Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendedXmlSerializer/home/b46e8b34e124ef960c97292983653df5c5cf8f55/Logo.png -------------------------------------------------------------------------------- /NuGet.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /documentation/.archive/ExtendedXmlSerializer.Documentation/icons/Help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendedXmlSerializer/home/b46e8b34e124ef960c97292983653df5c5cf8f55/documentation/.archive/ExtendedXmlSerializer.Documentation/icons/Help.png -------------------------------------------------------------------------------- /documentation/.archive/docGenerator/ExtendedXmlSerializer.DocGenerator/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /documentation/.archive/docGenerator/ExtendedXmlSerializer.DocGenerator/ExportedTypes/CodeFormat.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.DocGenerator.ExportedTypes 2 | { 3 | public enum CodeFormat 4 | { 5 | Cs, 6 | Xml 7 | } 8 | } -------------------------------------------------------------------------------- /documentation/.archive/index.rst: -------------------------------------------------------------------------------- 1 | Welcome to ExtendedXmlSerializer's documentation! 2 | =================================== 3 | 4 | ExtendedXmlSerializer for .NET 5 | 6 | .. toctree:: 7 | :maxdepth: 3 8 | 9 | get-started/index.rst 10 | API Documentation 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 |
    4 |
    5 |
    6 |

    7 |
    8 | 9 |
    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> {} 4 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Sources/IFinish.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace ExtendedXmlSerializer.Core.Sources 4 | { 5 | interface IFinish : IEnumerable {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Sources/IFormatter.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Core.Sources 2 | { 3 | /// 4 | /// A selector that derives a text string representation from the provided instance. 5 | /// 6 | /// The instance type. 7 | public interface IFormatter : IParameterizedSource {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Sources/IItems.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.Immutable; 3 | 4 | namespace ExtendedXmlSerializer.Core.Sources 5 | { 6 | interface IItems : IEnumerable, ISource> {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Sources/IStart.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace ExtendedXmlSerializer.Core.Sources 4 | { 5 | interface IStart : IEnumerable {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Sources/QuotedAlteration.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Core.Sources 2 | { 3 | sealed class QuotedAlteration : IAlteration 4 | { 5 | public static QuotedAlteration Default { get; } = new QuotedAlteration(); 6 | 7 | QuotedAlteration() {} 8 | 9 | public string Get(string parameter) => $@"""{parameter}"""; 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Sources/SingletonSource.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ExtendedXmlSerializer.Core.Sources 4 | { 5 | class SingletonSource : ISource 6 | { 7 | readonly Lazy _source; 8 | 9 | public SingletonSource(Func source) : this(new Lazy(source)) {} 10 | 11 | SingletonSource(Lazy source) 12 | { 13 | _source = source; 14 | } 15 | 16 | public T Get() => _source.Value; 17 | } 18 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Sources/StructureCache.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ExtendedXmlSerializer.Core.Sources 4 | { 5 | class StructureCache : StructureCacheBase where TKey : class where TValue : struct 6 | { 7 | readonly Func _factory; 8 | 9 | public StructureCache(Func factory) 10 | { 11 | _factory = factory; 12 | } 13 | 14 | protected sealed override TValue Create(TKey parameter) => _factory(parameter); 15 | } 16 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Sources/TypeComparer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace ExtendedXmlSerializer.Core.Sources 4 | { 5 | sealed class TypeComparer : IEqualityComparer 6 | { 7 | public static TypeComparer Default { get; } = new TypeComparer(); 8 | 9 | TypeComparer() {} 10 | 11 | public bool Equals(T x, T y) => x.GetType() == y.GetType(); 12 | 13 | public int GetHashCode(T obj) => 0; 14 | } 15 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Specifications/AlteredValueSpecification.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Core.Specifications 2 | { 3 | sealed class AlteredValueSpecification : InverseSpecification 4 | { 5 | public static AlteredValueSpecification Default { get; } = new AlteredValueSpecification(); 6 | 7 | AlteredValueSpecification() : base(DefaultValueSpecification.Default) {} 8 | } 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Specifications/AlwaysSpecification.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Core.Specifications 2 | { 3 | sealed class AlwaysSpecification : ISpecification 4 | { 5 | public static AlwaysSpecification Default { get; } = new AlwaysSpecification(); 6 | 7 | AlwaysSpecification() {} 8 | 9 | public bool IsSatisfiedBy(T parameter) => true; 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Specifications/AssignedSpecification.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Core.Specifications 2 | { 3 | sealed class AssignedSpecification : ISpecification 4 | { 5 | public static AssignedSpecification Default { get; } = new AssignedSpecification(); 6 | 7 | AssignedSpecification() {} 8 | 9 | public bool IsSatisfiedBy(T parameter) => !ReferenceEquals(null, parameter); 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Specifications/ConditionalSpecification.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Core.Specifications 2 | { 3 | sealed class ConditionalSpecification : ISpecification 4 | { 5 | readonly ConditionMonitor _monitor; 6 | 7 | public ConditionalSpecification() : this(new ConditionMonitor()) {} 8 | 9 | public ConditionalSpecification(ConditionMonitor monitor) => _monitor = monitor; 10 | 11 | public bool IsSatisfiedBy(T parameter) => _monitor.Apply(); 12 | } 13 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Specifications/ContainsSpecification.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace ExtendedXmlSerializer.Core.Specifications 4 | { 5 | class ContainsSpecification : DelegatedSpecification 6 | { 7 | public ContainsSpecification(ICollection source) : base(source.Contains) {} 8 | 9 | public sealed override bool IsSatisfiedBy(T parameter) => base.IsSatisfiedBy(parameter); 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Specifications/EqualitySpecification.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Core.Specifications 2 | { 3 | sealed class EqualitySpecification : ISpecification 4 | { 5 | readonly T _source; 6 | 7 | public EqualitySpecification(T source) => _source = source; 8 | 9 | public bool IsSatisfiedBy(T parameter) => Equals(parameter, _source); 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Specifications/InverseSpecification.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Core.Specifications 2 | { 3 | class InverseSpecification : DelegatedSpecification 4 | { 5 | public InverseSpecification(ISpecification inner) : base(inner.IsSatisfiedBy) {} 6 | 7 | public override bool IsSatisfiedBy(T parameter) => !base.IsSatisfiedBy(parameter); 8 | } 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/Specifications/SpecificationAdapter.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Core.Specifications 2 | { 3 | sealed class SpecificationAdapter : ISpecification 4 | { 5 | readonly ISpecification _specification; 6 | 7 | public SpecificationAdapter(ISpecification specification) => _specification = specification; 8 | 9 | public bool IsSatisfiedBy(object parameter) => parameter is T && _specification.IsSatisfiedBy((T)parameter); 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/Core/TypedSortOrder.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.Core 5 | { 6 | sealed class TypedSortOrder : StructureCache, ITypedSortOrder 7 | { 8 | public TypedSortOrder() : base(_ => 1) {} 9 | } 10 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtendedXmlSerializer.csproj.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | Default -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/AssociatedReaders.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Format; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel 5 | { 6 | sealed class AssociatedReaders : ReferenceCache, IAlteration 7 | { 8 | public static AssociatedReaders Default { get; } = new AssociatedReaders(); 9 | 10 | AssociatedReaders() : base(x => x) {} 11 | } 12 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Coercion/CoercerParameter.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Coercion 4 | { 5 | readonly struct CoercerParameter 6 | { 7 | public CoercerParameter(object instance, TypeInfo targetType) 8 | { 9 | Instance = instance; 10 | TargetType = targetType; 11 | } 12 | 13 | public object Instance { get; } 14 | public TypeInfo TargetType { get; } 15 | } 16 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Coercion/ICoercer.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | using ExtendedXmlSerializer.Core.Specifications; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.Coercion 6 | { 7 | interface ICoercer 8 | : ISpecification, 9 | ISpecification, 10 | IParameterizedSource {} 11 | 12 | //public interface ICoercer : IParameterizedSource {} 13 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Coercion/ICoercers.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Coercion 4 | { 5 | interface ICoercers : IParameterizedSource {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Coercion/ICoercion.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Coercion 5 | { 6 | interface ICoercion : ISpecificationSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Coercion/TypeCoercer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Coercion 5 | { 6 | sealed class TypeCoercer : CoercerBase 7 | { 8 | public static TypeCoercer Default { get; } = new TypeCoercer(); 9 | 10 | TypeCoercer() {} 11 | 12 | protected override Type Get(TypeInfo parameter, TypeInfo targetType) => parameter.AsType(); 13 | } 14 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Coercion/TypeMetadataCoercer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Coercion 5 | { 6 | sealed class TypeMetadataCoercer : CoercerBase 7 | { 8 | public static TypeMetadataCoercer Default { get; } = new TypeMetadataCoercer(); 9 | 10 | TypeMetadataCoercer() {} 11 | 12 | protected override TypeInfo Get(Type parameter, TypeInfo targetType) => parameter.GetTypeInfo(); 13 | } 14 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Content/ContentAlteration.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Content 4 | { 5 | readonly struct ContentAlteration 6 | { 7 | public ContentAlteration(IAlteration read, IAlteration write) 8 | { 9 | Read = read; 10 | Write = write; 11 | } 12 | 13 | public IAlteration Read { get; } 14 | 15 | public IAlteration Write { get; } 16 | } 17 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Content/IReservedItems.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Format; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | using ExtendedXmlSerializer.ExtensionModel.References; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.Content 6 | { 7 | interface IReservedItems : IParameterizedSource {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Content/ITypedSpecifications.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | using ExtendedXmlSerializer.Core.Specifications; 3 | using System.Reflection; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.Content 6 | { 7 | /// 8 | /// A store of type specifications, keyed by type metdata. 9 | /// 10 | public interface ITypedSpecifications : IParameterizedSource> {} 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Content/Members/IConstructorMembers.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Immutable; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.ContentModel.Members; 4 | using ExtendedXmlSerializer.Core.Sources; 5 | 6 | namespace ExtendedXmlSerializer.ExtensionModel.Content.Members 7 | { 8 | interface IConstructorMembers : IParameterizedSource?> {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Content/Members/IMemberLocators.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Content.Members 5 | { 6 | interface IMemberLocators : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Content/Members/IMemberSpecification.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Members; 2 | using ExtendedXmlSerializer.Core.Specifications; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Content.Members 5 | { 6 | /// 7 | /// Specialized specification for members. 8 | /// 9 | public interface IMemberSpecification : ISpecification {} 10 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Content/Members/IMemberSpecifications.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Members; 2 | using ExtendedXmlSerializer.Core.Specifications; 3 | using System.Collections.Generic; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.Content.Members 6 | { 7 | /// 8 | /// Represents a source of member specifications. 9 | /// 10 | public interface IMemberSpecifications : IEnumerable> {} 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Content/Members/IMetadataLocator.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Members; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Content.Members 5 | { 6 | interface IMetadataLocator : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Content/Members/IParameterizedMembers.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Immutable; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.ContentModel.Members; 4 | using ExtendedXmlSerializer.Core.Sources; 5 | 6 | namespace ExtendedXmlSerializer.ExtensionModel.Content.Members 7 | { 8 | interface IParameterizedMembers : IParameterizedSource?> {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Content/Members/IsField.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.ContentModel.Members; 3 | using ExtendedXmlSerializer.Core.Specifications; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.Content.Members 6 | { 7 | sealed class IsField : DelegatedSpecification 8 | { 9 | public static IsField Default { get; } = new IsField(); 10 | 11 | IsField() : base(x => x.Metadata is FieldInfo) {} 12 | } 13 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Content/Members/MemberSpecification.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using ExtendedXmlSerializer.ContentModel.Members; 3 | using ExtendedXmlSerializer.Core.Specifications; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.Content.Members 6 | { 7 | sealed class MemberSpecification : AllSpecification, IMemberSpecification 8 | { 9 | public MemberSpecification(IMemberSpecifications specifications) : base(specifications.ToArray()) {} 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Encryption/IDecrypt.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Encryption 4 | { 5 | /// 6 | /// Used to decrypt a string from encrypted input to decrypted output. 7 | /// 8 | public interface IDecrypt : IAlteration {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Encryption/IEncrypt.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Encryption 4 | { 5 | /// 6 | /// Used to encrypt a string from its plain text input to encrypted output. 7 | /// 8 | public interface IEncrypt : IAlteration {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Encryption/IEncryption.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Conversion; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Encryption 4 | { 5 | /// 6 | /// A converter used to encrypt and decrypt values. 7 | /// 8 | public interface IEncryption : IConvert {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Expressions/ExpressionBase.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.ExtensionModel.Expressions 2 | { 3 | abstract class ExpressionBase : IExpression 4 | { 5 | readonly string _expression; 6 | 7 | protected ExpressionBase(string expression) 8 | { 9 | _expression = expression; 10 | } 11 | 12 | public abstract object Get(IExpressionEvaluator parameter); 13 | 14 | public override string ToString() => _expression; 15 | } 16 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Expressions/FixedExpression.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Expressions 4 | { 5 | class FixedExpression : IExpression, ISource 6 | { 7 | readonly T _instance; 8 | 9 | public FixedExpression(T instance) 10 | { 11 | _instance = instance; 12 | } 13 | 14 | public object Get(IExpressionEvaluator parameter) => Get(); 15 | 16 | public T Get() => _instance; 17 | } 18 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Expressions/GeneralExpression.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.ExtensionModel.Expressions 2 | { 3 | sealed class GeneralExpression : ExpressionBase 4 | { 5 | public GeneralExpression(string expression) : base(expression) {} 6 | 7 | public override object Get(IExpressionEvaluator parameter) => parameter.Get(ToString()); 8 | } 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Expressions/IEvaluation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.Expressions 6 | { 7 | interface IEvaluation : ISpecificationSource, ISource {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Expressions/IEvaluator.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Expressions 4 | { 5 | interface IEvaluator : IParameterizedSource {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Expressions/IExpression.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Expressions 4 | { 5 | interface IExpression : IParameterizedSource {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Expressions/IExpressionEvaluator.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Expressions 4 | { 5 | interface IExpressionEvaluator : IParameterizedSource {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Expressions/LiteralExpression.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.ExtensionModel.Expressions 2 | { 3 | sealed class LiteralExpression : ExpressionBase 4 | { 5 | public LiteralExpression(string text) : base(text) {} 6 | 7 | public override object Get(IExpressionEvaluator parameter) => ToString(); 8 | } 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/FixedRegistration.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.ExtensionModel 2 | { 3 | sealed class FixedRegistration : IRegistration 4 | { 5 | readonly T _instance; 6 | 7 | public FixedRegistration(T instance) => _instance = instance; 8 | 9 | public IServiceRepository Get(IServiceRepository parameter) 10 | => parameter.RegisterInstance(_instance, _instance.GetType() 11 | .AssemblyQualifiedName); 12 | } 13 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/IRegistration.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel 4 | { 5 | /// 6 | /// An specialized alteration that is intended to alter a service repository. 7 | /// 8 | public interface IRegistration : IAlteration {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Instances/Existing.cs: -------------------------------------------------------------------------------- 1 | using System.Xml; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Instances 4 | { 5 | readonly struct Existing 6 | { 7 | public Existing(XmlReader reader, object instance) 8 | { 9 | Reader = reader; 10 | Instance = instance; 11 | } 12 | 13 | public XmlReader Reader { get; } 14 | 15 | public object Instance { get; } 16 | } 17 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Instances/IInstanceReader.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Instances 4 | { 5 | interface IInstanceReader : IParameterizedSource {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Instances/IInstances.cs: -------------------------------------------------------------------------------- 1 | using System.Xml; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Instances 5 | { 6 | interface IInstances : ITableSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Instances/InstanceReaders.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Instances 4 | { 5 | sealed class InstanceReaders : ReferenceCache 6 | { 7 | public static InstanceReaders Default { get; } = new InstanceReaders(); 8 | 9 | InstanceReaders() : base(x => new InstanceReader(x)) {} 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Instances/Instances.cs: -------------------------------------------------------------------------------- 1 | using System.Xml; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Instances 5 | { 6 | sealed class Instances : ReferenceCache, IInstances 7 | { 8 | public static Instances Default { get; } = new Instances(); 9 | 10 | Instances() : base(_ => null) {} 11 | } 12 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Markup/Enhancer.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.ExtensionModel.Markup 2 | { 3 | sealed class Enhancer : IEnhancer 4 | { 5 | readonly IMarkupExtensions _container; 6 | 7 | public Enhancer(IMarkupExtensions container) 8 | { 9 | _container = container; 10 | } 11 | 12 | public ContentModel.ISerializer Get(ContentModel.ISerializer parameter) => new MarkupExtensionAwareSerializer(_container, parameter); 13 | } 14 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Markup/IEnhancer.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Markup 4 | { 5 | interface IEnhancer : IAlteration {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Markup/IMarkupExtensionPartsEvaluator.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Markup 4 | { 5 | interface IMarkupExtensionPartsEvaluator : IParameterizedSource {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Markup/IMarkupExtensions.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Format; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Markup 5 | { 6 | interface IMarkupExtensions : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Markup/IValidConstructorSpecification.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.ExtensionModel.Markup 2 | { 3 | interface IValidConstructorSpecification : ReflectionModel.IValidConstructorSpecification {} 4 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Markup/MarkupExtensionPartsExpression.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ExtensionModel.Expressions; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Markup 4 | { 5 | sealed class MarkupExtensionPartsExpression : FixedExpression 6 | { 7 | public MarkupExtensionPartsExpression(MarkupExtensionParts parts) : base(parts) {} 8 | } 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Markup/NullExtension.cs: -------------------------------------------------------------------------------- 1 | using JetBrains.Annotations; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Markup 4 | { 5 | /// 6 | /// Markup extension to return a `null` value. 7 | /// 8 | [UsedImplicitly] 9 | public sealed class NullExtension : IMarkupExtension 10 | { 11 | /// 12 | public object ProvideValue(System.IServiceProvider serviceProvider) => null; 13 | } 14 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/CircularReferencesDetectedException.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.References 4 | { 5 | sealed class CircularReferencesDetectedException : ReferencesDetectedException 6 | { 7 | public CircularReferencesDetectedException(string message, IWriter writer) : base(message, writer) {} 8 | } 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/ContentsContext.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Content; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.References 5 | { 6 | sealed class ContentsContext : ReferenceCache, IContentsContext 7 | { 8 | public static ContentsContext Default { get; } = new ContentsContext(); 9 | 10 | ContentsContext() : base(_ => null) {} 11 | } 12 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IContentsContext.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Content; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.References 5 | { 6 | interface IContentsContext : ITableSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IDeferredCommand.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.References 5 | { 6 | interface IDeferredCommand : ICommand, ISource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IDeferredCommands.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using ExtendedXmlSerializer.ContentModel.Format; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.References 6 | { 7 | interface IDeferredCommands : IParameterizedSource> {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IEncounters.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | using ExtendedXmlSerializer.Core.Specifications; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.References 5 | { 6 | interface IEncounters : ISpecification, IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IEntities.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.References 5 | { 6 | interface IEntities : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IEntity.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Format; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.References 5 | { 6 | interface IEntity : IParameterizedSource, IParameterizedSource 7 | { 8 | object Reference(IFormatReader parameter); 9 | } 10 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IEntityMembers.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.ReflectionModel; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.References 5 | { 6 | interface IEntityMembers : ITypedTable {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IMultipleReferencesAllowed.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.ExtensionModel.References; 2 | 3 | interface IMultipleReferencesAllowed 4 | { 5 | bool Allowed { get; } 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IReferenceEncounters.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Format; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.References 5 | { 6 | interface IReferenceEncounters : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IReferenceMap.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.References 4 | { 5 | interface IReferenceMap : ITableSource {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IReferenceMaps.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Format; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.References 5 | { 6 | interface IReferenceMaps : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IReferenceView.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.References; 4 | 5 | interface IReferenceView : IParameterizedSource {} -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IReferencesPolicy.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Specifications; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.References 5 | { 6 | interface IReferencesPolicy : ISpecification {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IRootReferences.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Format; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | using System.Collections.Generic; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.References 6 | { 7 | interface IRootReferences : IParameterizedSource> {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/IStaticReferenceSpecification.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Specifications; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.References 5 | { 6 | interface IStaticReferenceSpecification : ISpecification {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/ITrackedLists.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.References 6 | { 7 | interface ITrackedLists : IParameterizedSource> {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/Identifier.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.ExtensionModel.References 2 | { 3 | readonly struct Identifier 4 | { 5 | public Identifier(uint uniqueId, IEntity entity = null) 6 | { 7 | UniqueId = uniqueId; 8 | Entity = entity; 9 | } 10 | 11 | public uint UniqueId { get; } 12 | public IEntity Entity { get; } 13 | } 14 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/MultipleReferencesAllowed.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.References; 4 | 5 | sealed class MultipleReferencesAllowed : FixedInstanceSource, IMultipleReferencesAllowed 6 | { 7 | public MultipleReferencesAllowed(bool instance) : base(instance) {} 8 | 9 | public bool Allowed => Get(); 10 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/MultipleReferencesDetectedException.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.References; 4 | 5 | sealed class MultipleReferencesDetectedException : ReferencesDetectedException 6 | { 7 | public MultipleReferencesDetectedException(string message, IWriter writer) : base(message, writer) {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/ProcessReferenceInput.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.ExtensionModel.References; 2 | 3 | readonly record struct ProcessReferenceInput(ReferenceSet Results, object Current); -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/ReferenceBoundary.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.References; 5 | 6 | readonly struct ReferenceBoundary : IDisposable 7 | { 8 | readonly Stack _context; 9 | 10 | public ReferenceBoundary(Stack context) => _context = context; 11 | 12 | public void Dispose() 13 | { 14 | _context.Pop(); 15 | } 16 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/ReferenceMap.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.References 4 | { 5 | sealed class ReferenceMap : TableSource, IReferenceMap {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/ReferenceMaps.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.References 4 | { 5 | sealed class ReferenceMaps : AssociationAwareReferenceMaps 6 | { 7 | public static ReferenceMaps Default { get; } = new ReferenceMaps(); 8 | 9 | ReferenceMaps() : base(new ReferenceCache(_ => new ReferenceMap())) {} 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/ReferenceResult.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.References; 4 | 5 | record ReferenceResult(HashSet Encountered, HashSet Cyclical) 6 | { 7 | protected ReferenceResult() : this(new HashSet(), new HashSet()) {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/ReferencesDetectedException.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel; 2 | using System; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.References; 5 | 6 | class ReferencesDetectedException : Exception 7 | { 8 | public ReferencesDetectedException(string message, IWriter writer) : base(message) => Writer = writer; 9 | 10 | public IWriter Writer { get; } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/TrackedLists.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.References 6 | { 7 | sealed class TrackedLists : Cache>, ITrackedLists 8 | { 9 | public TrackedLists() : base(_ => new Stack()) {} 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/References/WhitelistReferencesPolicy.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Specifications; 2 | using System.Collections.Generic; 3 | using System.Reflection; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.References 6 | { 7 | sealed class WhitelistReferencesPolicy : ContainsSpecification, IReferencesPolicy 8 | { 9 | public WhitelistReferencesPolicy(ICollection allow) : base(allow) {} 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Registration.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel 4 | { 5 | sealed class Registration : IRegistration 6 | { 7 | readonly static Type ServiceType = typeof(T); 8 | 9 | readonly Type _type; 10 | 11 | public Registration(Type type) => _type = type; 12 | 13 | public IServiceRepository Get(IServiceRepository parameter) => parameter.Register(ServiceType, _type); 14 | } 15 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/RootInstances.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel 4 | { 5 | sealed class RootInstances : ReferenceCache, IRootInstances 6 | { 7 | public static RootInstances Default { get; } = new RootInstances(); 8 | 9 | RootInstances() : base(_ => null) {} 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Types/IActivationAware.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Types 4 | { 5 | /// 6 | /// Convenience interface for activating components. 7 | /// 8 | public interface IActivationAware : ISource {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Types/IActivationContext.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | using ExtendedXmlSerializer.ReflectionModel; 3 | using System.Collections; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.Types 6 | { 7 | interface IActivationContext : ITableSource, IList, IActivator {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Types/IActivationContexts.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Types 5 | { 6 | interface IActivationContexts : IParameterizedSource, IActivationContext> {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Types/IQueriedConstructors.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ReflectionModel; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Types 4 | { 5 | interface IQueriedConstructors : IConstructorLocator {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Types/ISingletonCandidates.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Types 4 | { 5 | interface ISingletonCandidates : IEnumerable {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Types/ISingletonLocator.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Types 5 | { 6 | interface ISingletonLocator : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Types/ISingletons.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Types 5 | { 6 | interface ISingletons : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Types/ITypeAware.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Types 5 | { 6 | interface ITypeAware : ISource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Types/ImmutableArrays.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel; 2 | using ExtendedXmlSerializer.ContentModel.Collections; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Types 5 | { 6 | sealed class ImmutableArrays : Collections 7 | { 8 | public ImmutableArrays(RuntimeSerializers serializers, ImmutableArrayContents contents) 9 | : base(serializers, contents) {} 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Types/Singletons.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Types 5 | { 6 | sealed class Singletons : ReferenceCache, ISingletons 7 | { 8 | public static Singletons Default { get; } = new Singletons(); 9 | 10 | Singletons() : base(x => x.GetValue(null)) {} 11 | } 12 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Types/Sources/TypesInSameNamespace.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | 6 | namespace ExtendedXmlSerializer.ExtensionModel.Types.Sources 7 | { 8 | sealed class TypesInSameNamespace : Items 9 | { 10 | public TypesInSameNamespace(Type referenceType, IEnumerable candidates) 11 | : base(candidates.Where(x => x.Namespace == referenceType.Namespace)) {} 12 | } 13 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/Classic/ClassicCollections.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel; 2 | using ExtendedXmlSerializer.ContentModel.Collections; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Xml.Classic 5 | { 6 | sealed class ClassicCollections : Collections 7 | { 8 | public ClassicCollections(RuntimeSerializers serializers, ClassicCollectionContents contents) 9 | : base(serializers, contents) {} 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/Classic/ITypeIdentification.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Identification; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | using System.Reflection; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.Xml.Classic 6 | { 7 | interface ITypeIdentification 8 | : IParameterizedSource, IParameterizedSource {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/Classic/ITypeIdentifications.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.Xml.Classic 6 | { 7 | interface ITypeIdentifications : IParameterizedSource, ITypeIdentification> {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/Classic/ITypeIdentity.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.ContentModel.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ExtensionModel.Xml.Classic 6 | { 7 | interface ITypeIdentity : IParameterizedSource {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/Classic/ITypeIdentityRegistrations.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.ContentModel.Identification; 4 | using ExtendedXmlSerializer.Core.Sources; 5 | 6 | namespace ExtendedXmlSerializer.ExtensionModel.Xml.Classic 7 | { 8 | interface ITypeIdentityRegistrations 9 | : IParameterizedSource, IEnumerable>> {} 10 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/Classic/XmlRootIdentity.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Serialization; 2 | using ExtendedXmlSerializer.ContentModel.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Xml.Classic 5 | { 6 | sealed class XmlRootIdentity : TypeIdentity 7 | { 8 | public static XmlRootIdentity Default { get; } = new XmlRootIdentity(); 9 | 10 | XmlRootIdentity() : base(attribute => new Key(attribute.ElementName, attribute.Namespace)) {} 11 | } 12 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/Classic/XmlTypeIdentity.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Serialization; 2 | using ExtendedXmlSerializer.ContentModel.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Xml.Classic 5 | { 6 | sealed class XmlTypeIdentity : TypeIdentity 7 | { 8 | public static XmlTypeIdentity Default { get; } = new XmlTypeIdentity(); 9 | 10 | XmlTypeIdentity() : base(attribute => new Key(attribute.TypeName, attribute.Namespace)) {} 11 | } 12 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/ContainsCustomSerialization.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Specifications; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 5 | { 6 | sealed class ContainsCustomSerialization : AnySpecification, IContainsCustomSerialization 7 | { 8 | public ContainsCustomSerialization(ICustomXmlSerializers xmlSerializers, ICustomSerializers types) 9 | : base(xmlSerializers, types) {} 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/CustomSerializers.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 5 | { 6 | sealed class CustomSerializers : Metadata, ICustomSerializers 7 | { 8 | public CustomSerializers() : this(ExtensionModel.Defaults.TypeComparer) {} 9 | 10 | public CustomSerializers(IEqualityComparer comparer) : base(comparer) {} 11 | } 12 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/CustomXmlSerializers.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 4 | { 5 | sealed class CustomXmlSerializers : Metadata, ICustomXmlSerializers 6 | { 7 | public CustomXmlSerializers() : base(ReflectionModel.Defaults.TypeComparer) {} 8 | } 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/DefaultPrefix.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 2 | { 3 | sealed class DefaultPrefix : IPrefix 4 | { 5 | readonly System.Xml.XmlWriter _writer; 6 | 7 | public DefaultPrefix(System.Xml.XmlWriter writer) => _writer = writer; 8 | 9 | public string Get(string parameter) => _writer.LookupPrefix(parameter ?? string.Empty); 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/IContainsCustomSerialization.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Specifications; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 5 | { 6 | interface IContainsCustomSerialization : ISpecification {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/ICustomMemberSerializers.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ReflectionModel; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 4 | { 5 | /// 6 | /// Specialized selector that manages custom serializer registration for a specific member. 7 | /// 8 | public interface ICustomMemberSerializers : IMemberTable, ISerializerExtension {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/ICustomSerializers.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ReflectionModel; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 4 | { 5 | /// 6 | /// Specialized selector that manages custom serializer registration for a specific type. 7 | /// 8 | public interface ICustomSerializers : ITypedTable, ISerializerExtension {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/ICustomXmlSerializers.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ReflectionModel; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 4 | { 5 | /// 6 | /// Specialized selector for v1 functionality. This is unsupported and consumers should use the v2 7 | /// equivalent instead. 8 | /// 9 | public interface ICustomXmlSerializers : ITypedTable, ISerializerExtension {} 10 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/IInstanceFormatter.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 4 | { 5 | interface IInstanceFormatter : IFormatter {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/IObjectIdentifiers.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Immutable; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 5 | { 6 | interface IObjectIdentifiers : IParameterizedSource> {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/IPrefix.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 4 | { 5 | /// 6 | /// A specialized selector to expand a provided prefix. 7 | /// 8 | public interface IPrefix : IAlteration {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/IPrefixes.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 4 | { 5 | /// 6 | /// A prefix store, keyed by . 7 | /// 8 | public interface IPrefixes : IParameterizedSource {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/IRead.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 4 | { 5 | interface IRead : IParameterizedSource {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/IWrite.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Format; 2 | using ExtendedXmlSerializer.Core; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 5 | { 6 | interface IWrite : ICommand {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/IXmlContentsActivator.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Content; 2 | using ExtendedXmlSerializer.ContentModel.Format; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 5 | { 6 | interface IXmlContentsActivator 7 | { 8 | IInnerContent Create(IFormatReader reader, object instance, XmlContent content); 9 | } 10 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/IXmlParserContexts.cs: -------------------------------------------------------------------------------- 1 | using System.Xml; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 5 | { 6 | interface IXmlParserContexts : ISpecificationSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/IXmlReaderFactory.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | using System.IO; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 5 | { 6 | /// 7 | /// Responsible for providing a reader per deserialization operation. 8 | /// 9 | public interface IXmlReaderFactory 10 | : IParameterizedSource, 11 | IParameterizedSource {} 12 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/IXmlWriterFactory.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | using System.IO; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 5 | { 6 | /// 7 | /// Responsible for providing a writer per serialization operation. 8 | /// 9 | public interface IXmlWriterFactory 10 | : IParameterizedSource, 11 | IParameterizedSource {} 12 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/MemberCustomSerializers.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ReflectionModel; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 5 | { 6 | sealed class MemberCustomSerializers : Metadata, ICustomMemberSerializers 7 | { 8 | public MemberCustomSerializers() : base(MemberComparer.Default) {} 9 | } 10 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/Prefix.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 4 | { 5 | sealed class Prefix : IPrefix 6 | { 7 | readonly IPrefix _prefix; 8 | 9 | public Prefix(IPrefix prefix) => _prefix = prefix; 10 | 11 | public string Get(string parameter) => parameter.NullIfEmpty() == null ? string.Empty : _prefix.Get(parameter); 12 | } 13 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ExtensionModel/Xml/ReaderFormatter.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ContentModel.Format; 2 | 3 | namespace ExtendedXmlSerializer.ExtensionModel.Xml 4 | { 5 | sealed class ReaderFormatter : IReaderFormatter 6 | { 7 | public static ReaderFormatter Default { get; } = new ReaderFormatter(); 8 | 9 | ReaderFormatter() {} 10 | 11 | public string Get(IFormatReader parameter) => ((System.Xml.XmlReader)parameter.Get()).LocalName; 12 | } 13 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/IExtendedXmlSerializer.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.ExtensionModel.Xml; 2 | 3 | namespace ExtendedXmlSerializer 4 | { 5 | /// 6 | /// The root Xml serializer component. This is what is created by the configuration container and is used to serialize 7 | /// objects from memory into a destination and deserialize objects into memory from a source. 8 | /// 9 | public interface IExtendedXmlSerializer : ISerializer {} 10 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/Activator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | sealed class Activator : DelegatedSource, IActivator 7 | { 8 | public Activator(Func source) : base(source) {} 9 | } 10 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/AssemblyProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Reflection; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | sealed class AssemblyProvider : IAssemblyProvider 8 | { 9 | public static AssemblyProvider Default { get; } = new AssemblyProvider(); 10 | 11 | AssemblyProvider() {} 12 | 13 | public IEnumerable Get() => AppDomain.CurrentDomain.GetAssemblies(); 14 | } 15 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/AssemblyTypes.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | class AssemblyTypes : IAssemblyTypes 7 | { 8 | public static AssemblyTypes Default { get; } = new AssemblyTypes(); 9 | 10 | AssemblyTypes() {} 11 | 12 | public IEnumerable Get(Assembly parameter) => parameter.DefinedTypes; 13 | } 14 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/Constructors.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | sealed class Constructors : IConstructors 7 | { 8 | public static Constructors Default { get; } = new Constructors(); 9 | 10 | Constructors() {} 11 | 12 | public IEnumerable Get(TypeInfo parameter) => parameter.GetConstructors(); 13 | } 14 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/DefaultValues.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ReflectionModel 4 | { 5 | sealed class DefaultValues : DelegatedSource 6 | { 7 | public static DefaultValues Default { get; } = new DefaultValues(); 8 | 9 | DefaultValues() : base(() => default(T)) {} 10 | } 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/Fields.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | sealed class Fields : IFields 7 | { 8 | public static Fields Default { get; } = new Fields(); 9 | 10 | Fields() {} 11 | 12 | public IEnumerable Get(TypeInfo parameter) => parameter.GetRuntimeFields(); 13 | } 14 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IActivatingTypeSpecification.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Specifications; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | interface IActivatingTypeSpecification : ISpecification {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IActivator.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Sources; 2 | 3 | namespace ExtendedXmlSerializer.ReflectionModel 4 | { 5 | interface IActivator : ISource {} 6 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IActivators.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | interface IActivators : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IAddDelegates.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | interface IAddDelegates : IParameterizedSource> {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IAddMethodLocator.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace ExtendedXmlSerializer.ReflectionModel 4 | { 5 | interface IAddMethodLocator 6 | { 7 | MethodInfo Locate(TypeInfo type, TypeInfo elementType); 8 | } 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IApplicationTypes.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Immutable; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | interface IApplicationTypes : IParameterizedSource> {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IAssemblyLoader.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | interface IAssemblyLoader : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IAssemblyProvider.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | #if CORE 6 | #endif 7 | 8 | namespace ExtendedXmlSerializer.ReflectionModel 9 | { 10 | interface IAssemblyProvider : ISource> {} 11 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IAssemblyTypes.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | interface IAssemblyTypes : IParameterizedSource> {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/ICollectionItemTypeLocator.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | interface ICollectionItemTypeLocator : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IConstructorLocator.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | interface IConstructorLocator : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IConstructors.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | interface IConstructors : IParameterizedSource> {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IDictionaryEnumerators.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.ReflectionModel 2 | { 3 | interface IDictionaryEnumerators : IEnumerators {} 4 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IDictionaryPairTypesLocator.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | using System.Reflection; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | interface IDictionaryPairTypesLocator : IParameterizedSource {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IEnumeratorStore.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | interface IEnumeratorStore : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IEnumerators.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | interface IEnumerators : IParameterizedSource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IFields.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | interface IFields : IParameterizedSource> {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IGenericActivation.cs: -------------------------------------------------------------------------------- 1 | using System.Linq.Expressions; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | interface IGenericActivation : IParameterizedSource {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IGenericAware.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Sources; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | interface IGenericAware : ISource {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IGenericDefinitionCandidates.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Immutable; 3 | using System.Reflection; 4 | using ExtendedXmlSerializer.Core.Sources; 5 | 6 | namespace ExtendedXmlSerializer.ReflectionModel 7 | { 8 | interface IGenericDefinitionCandidates : IParameterizedSource> {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IGetterFactory.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | interface IGetterFactory : IParameterizedSource> {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IInterfaceIdentities.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Immutable; 3 | using System.Reflection; 4 | using ExtendedXmlSerializer.Core.Sources; 5 | 6 | namespace ExtendedXmlSerializer.ReflectionModel 7 | { 8 | interface IInterfaceIdentities : IParameterizedSource> {} 9 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IMemberComparer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | interface IMemberComparer : IEqualityComparer {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IMemberTable.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace ExtendedXmlSerializer.ReflectionModel 4 | { 5 | /// 6 | /// Represents a store that is keyed on member metadata. 7 | /// 8 | /// The value type. 9 | public interface IMemberTable : IMetadataTable {} 10 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IProperties.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | interface IProperties : IParameterizedSource> {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/ISetterFactory.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | interface ISetterFactory : IParameterizedSource> {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/ITypeComparer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | /// 7 | /// Used to compare types. 8 | /// 9 | public interface ITypeComparer : IEqualityComparer {} 10 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/ITypePartitions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Immutable; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | interface ITypePartitions : IParameterizedSource?> {} 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/ITypedTable.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace ExtendedXmlSerializer.ReflectionModel 4 | { 5 | /// 6 | /// Represents a store keyed on type metadata. 7 | /// 8 | /// The value type. 9 | public interface ITypedTable : IMetadataTable {} 10 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IValidConstructorSpecification.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Specifications; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | interface IValidConstructorSpecification : ISpecification {} 7 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/InheritedTypeComparer.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace ExtendedXmlSerializer.ReflectionModel 4 | { 5 | sealed class InheritedTypeComparer : ITypeComparer 6 | { 7 | public static InheritedTypeComparer Default { get; } = new InheritedTypeComparer(); 8 | 9 | InheritedTypeComparer() {} 10 | 11 | public bool Equals(TypeInfo x, TypeInfo y) => x.IsAssignableFrom(y); 12 | 13 | public int GetHashCode(TypeInfo obj) => 0; 14 | } 15 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IsAnonymousType.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Specifications; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | sealed class IsAnonymousType : DelegatedSpecification 7 | { 8 | public static IsAnonymousType Default { get; } = new IsAnonymousType(); 9 | 10 | IsAnonymousType() : base(x => x.Name.StartsWith("<>f__")) {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IsArraySpecification.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Specifications; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | sealed class IsArraySpecification : ISpecification 7 | { 8 | public static IsArraySpecification Default { get; } = new IsArraySpecification(); 9 | 10 | IsArraySpecification() {} 11 | 12 | public bool IsSatisfiedBy(TypeInfo parameter) => parameter.IsArray; 13 | } 14 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IsInterface.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Core.Specifications; 2 | using System.Reflection; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | sealed class IsInterface : DelegatedSpecification 7 | { 8 | public static IsInterface Default { get; } = new IsInterface(); 9 | 10 | IsInterface() : base(x => x.IsInterface) {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/IsValueTypeSpecification.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Specifications; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | class IsValueTypeSpecification : ISpecification 7 | { 8 | public static IsValueTypeSpecification Default { get; } = new IsValueTypeSpecification(); 9 | 10 | IsValueTypeSpecification() {} 11 | 12 | public bool IsSatisfiedBy(TypeInfo parameter) => parameter.IsValueType; 13 | } 14 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/Partition.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Immutable; 3 | using System.Reflection; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | delegate Func?> Partition(string parameter); 8 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/TypeCoercer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | sealed class TypeCoercer : IParameterizedSource 8 | { 9 | public static TypeCoercer Default { get; } = new TypeCoercer(); 10 | 11 | TypeCoercer() {} 12 | 13 | public Type Get(TypeInfo parameter) => parameter.AsType(); 14 | } 15 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/TypeDefinitionIdentityComparer.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace ExtendedXmlSerializer.ReflectionModel 4 | { 5 | sealed class TypeDefinitionIdentityComparer : TypeIdentityComparerBase 6 | { 7 | public static TypeDefinitionIdentityComparer Default { get; } = new TypeDefinitionIdentityComparer(); 8 | 9 | TypeDefinitionIdentityComparer() {} 10 | 11 | public override int GetHashCode(TypeInfo obj) => obj.GUID.GetHashCode(); 12 | } 13 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/TypeMetadataCoercer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using ExtendedXmlSerializer.Core.Sources; 4 | 5 | namespace ExtendedXmlSerializer.ReflectionModel 6 | { 7 | sealed class TypeMetadataCoercer : IParameterizedSource 8 | { 9 | public static TypeMetadataCoercer Default { get; } = new TypeMetadataCoercer(); 10 | 11 | TypeMetadataCoercer() {} 12 | 13 | public TypeInfo Get(Type parameter) => parameter.GetTypeInfo(); 14 | } 15 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/TypePartition.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace ExtendedXmlSerializer.ReflectionModel 4 | { 5 | readonly struct TypePartition 6 | { 7 | public TypePartition(Assembly assembly, string @namespace, string name) 8 | { 9 | Assembly = assembly; 10 | Namespace = @namespace; 11 | Name = name; 12 | } 13 | 14 | public Assembly Assembly { get; } 15 | public string Namespace { get; } 16 | public string Name { get; } 17 | } 18 | } -------------------------------------------------------------------------------- /src/ExtendedXmlSerializer/ReflectionModel/VariableTypeSpecification.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using ExtendedXmlSerializer.Core.Specifications; 3 | 4 | namespace ExtendedXmlSerializer.ReflectionModel 5 | { 6 | sealed class VariableTypeSpecification : InverseSpecification 7 | { 8 | public static VariableTypeSpecification Default { get; } = new VariableTypeSpecification(); 9 | 10 | VariableTypeSpecification() : base(FixedTypeSpecification.Default) {} 11 | } 12 | } -------------------------------------------------------------------------------- /test/.External/VweCore/Abstractions/ICustomDelete.cs: -------------------------------------------------------------------------------- 1 | namespace VweCore.Abstractions 2 | { 3 | public interface ICustomDelete 4 | { 5 | void DeleteFromMap(Map map); 6 | 7 | void RestoreBackToMap(Map map); 8 | } 9 | } -------------------------------------------------------------------------------- /test/.External/VweCore/Abstractions/ILineSegment.cs: -------------------------------------------------------------------------------- 1 | using VweCore.Geometry; 2 | 3 | namespace VweCore.Abstractions 4 | { 5 | public interface ILineSegment : IEntity 6 | { 7 | Point2D Point1 { get; set; } 8 | 9 | Point2D Point2 { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /test/.External/VweCore/Abstractions/IMovable.cs: -------------------------------------------------------------------------------- 1 | using VweCore.Geometry; 2 | 3 | namespace VweCore.Abstractions 4 | { 5 | public interface IMovable : IEntity 6 | { 7 | void Move(Point2D moveVector); 8 | } 9 | } -------------------------------------------------------------------------------- /test/.External/VweCore/Abstractions/IPositionable.cs: -------------------------------------------------------------------------------- 1 | using VweCore.Geometry; 2 | 3 | namespace VweCore.Abstractions 4 | { 5 | public interface IPositionable : IMovable 6 | { 7 | Point2D Position { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /test/.External/VweCore/Abstractions/IRelativelyPositionable.cs: -------------------------------------------------------------------------------- 1 | using VweCore.Geometry; 2 | 3 | namespace VweCore.Abstractions 4 | { 5 | public interface IRelativelyPositionable : IMovable 6 | { 7 | Point2D Offset { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /test/.External/VweCore/Abstractions/IRelativelyRotatable.cs: -------------------------------------------------------------------------------- 1 | using VweCore.Geometry; 2 | 3 | namespace VweCore.Abstractions 4 | { 5 | public interface IRelativelyRotatable : IEntity 6 | { 7 | void RotateAroundReferencePoint(double angleInDegrees, Point2D referencePoint); 8 | } 9 | } -------------------------------------------------------------------------------- /test/.External/VweCore/Abstractions/IRotatable.cs: -------------------------------------------------------------------------------- 1 | namespace VweCore.Abstractions 2 | { 3 | public interface IRotatable : IEntity 4 | { 5 | double AngleInDegrees { get; } 6 | 7 | void RotateToAbsoluteAngle(double angleInDegrees); 8 | 9 | void Rotate(double angleInDegrees); 10 | } 11 | } -------------------------------------------------------------------------------- /test/.External/VweCore/CurveType.cs: -------------------------------------------------------------------------------- 1 | namespace VweCore 2 | { 3 | public enum CurveType 4 | { 5 | Spline4 6 | } 7 | } -------------------------------------------------------------------------------- /test/.External/VweCore/FrameworkExtensions/IObservable.cs: -------------------------------------------------------------------------------- 1 | namespace VweCore.FrameworkExtensions 2 | { 3 | public interface IObservable 4 | where T : class 5 | { 6 | void AddObserver(T observer); 7 | 8 | bool TryRemoveObserver(T observer); 9 | } 10 | } -------------------------------------------------------------------------------- /test/.External/VweCore/Geometry/AxisDirections.cs: -------------------------------------------------------------------------------- 1 | namespace VweCore.Geometry 2 | { 3 | public enum AbscissaDirection 4 | { 5 | LeftToRight, 6 | RightToLeft 7 | } 8 | 9 | public enum OrdinateDirection 10 | { 11 | BottomToTop, 12 | TopToBottom 13 | } 14 | } -------------------------------------------------------------------------------- /test/.External/VweCore/Geometry/ICurrentPointObserver.cs: -------------------------------------------------------------------------------- 1 | namespace VweCore.Geometry 2 | { 3 | public interface ICurrentPointObserver 4 | { 5 | void CurrentPointChanged(Point2D newPoint); 6 | } 7 | } -------------------------------------------------------------------------------- /test/.External/VweCore/Geometry/ICurrentPointSource.cs: -------------------------------------------------------------------------------- 1 | namespace VweCore.Geometry 2 | { 3 | public interface ICurrentPointSource 4 | { 5 | bool TryGetCurrentPoint(out Point2D currentPoint); 6 | } 7 | } -------------------------------------------------------------------------------- /test/.External/VweCore/NodeLinkDirection.cs: -------------------------------------------------------------------------------- 1 | namespace VweCore 2 | { 3 | public enum NodeLinkDirection 4 | { 5 | FromNode1ToNode2, 6 | FromNode2ToNode1, 7 | Bidirectional 8 | } 9 | } -------------------------------------------------------------------------------- /test/.External/VweCore/NodeLinkDrivingDirection.cs: -------------------------------------------------------------------------------- 1 | namespace VweCore 2 | { 3 | public enum NodeLinkDrivingDirection 4 | { 5 | Straight, 6 | Left, 7 | Right 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/.External/VweCore/SharedAssemblyInfo.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendedXmlSerializer/home/b46e8b34e124ef960c97292983653df5c5cf8f55/test/.External/VweCore/SharedAssemblyInfo.cs -------------------------------------------------------------------------------- /test/.External/VweCore/Translations/DefaultTranslator.cs: -------------------------------------------------------------------------------- 1 | namespace VweCore.Translations 2 | { 3 | // The default translator is used to provide a default implementation for test scenarios. 4 | // In production scenarios, the Translator in the WPF project should be used. 5 | // This implementation simply returns the key. 6 | public sealed class DefaultTranslator : ITranslator 7 | { 8 | public string GetTranslation(string key) => key; 9 | } 10 | } -------------------------------------------------------------------------------- /test/.External/VweCore/Translations/ITranslator.cs: -------------------------------------------------------------------------------- 1 | namespace VweCore.Translations 2 | { 3 | public interface ITranslator 4 | { 5 | string GetTranslation(string key); 6 | } 7 | } -------------------------------------------------------------------------------- /test/.External/VweCore/Translations/Translator.cs: -------------------------------------------------------------------------------- 1 | using Light.GuardClauses; 2 | 3 | namespace VweCore.Translations 4 | { 5 | public static class Translator 6 | { 7 | private static ITranslator _instance = new DefaultTranslator(); 8 | 9 | public static ITranslator Instance 10 | { 11 | get => _instance; 12 | set => _instance = value.MustNotBeNull(); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /test/.External/VweCore/VirtualPointOrigin.cs: -------------------------------------------------------------------------------- 1 | namespace VweCore 2 | { 3 | public enum VirtualPointOrigin 4 | { 5 | Position1, 6 | Position2 7 | } 8 | } -------------------------------------------------------------------------------- /test/.External/VweCore/VweCore.csproj.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | Default -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/ExtendedXmlSerializer.Tests.ReportedIssues.csproj.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | Default -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/Issue274Tests.cs: -------------------------------------------------------------------------------- 1 | using ExtendedXmlSerializer.Configuration; 2 | using Xunit; 3 | 4 | namespace ExtendedXmlSerializer.Tests.ReportedIssues 5 | { 6 | public sealed class Issue274Tests 7 | { 8 | [Fact] 9 | void Verify() 10 | { 11 | new ConfigurationContainer().WithUnknownContent() 12 | .Call(_ => {}); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/Issue479Tests.cs: -------------------------------------------------------------------------------- 1 | using FluentAssertions; 2 | using Xunit; 3 | 4 | namespace ExtendedXmlSerializer.Tests.ReportedIssues 5 | { 6 | public sealed class Issue479Tests 7 | { 8 | [Fact] 9 | public void Verify() 10 | { 11 | true.Should().BeTrue(); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/Issue538Tests.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Tests.ReportedIssues 2 | { 3 | public sealed class Issue538Tests 4 | { 5 | // Only used to trigger CI 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/Shared/DmDev.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Tests.ReportedIssues.Shared 2 | { 3 | public class DmDev {} 4 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/Shared/Issue442/IDeviceTemplate.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Tests.ReportedIssues.Shared.Issue442 2 | { 3 | public interface IDeviceTemplate {} 4 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/Shared/Issue442/WatchAndForceTableTemplate.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Serialization; 2 | 3 | namespace ExtendedXmlSerializer.Tests.ReportedIssues.Shared.Issue442 4 | { 5 | [XmlRoot("WatchAndForceTableEntry")] 6 | public class WatchAndForceTableTemplate 7 | { 8 | [XmlAttribute("name")] 9 | public string Name { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/Shared/Pathogen.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Tests.ReportedIssues.Shared 2 | { 3 | sealed class Pathogen : PathogenDto {} 4 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/Shared/PathogenDto.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Tests.ReportedIssues.Shared 2 | { 3 | class PathogenDto 4 | { 5 | public PathogenType PathogenType { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/Shared/PathogenType.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Tests.ReportedIssues.Shared 2 | { 3 | sealed class PathogenType : PathogenTypeDto 4 | { 5 | public char Code { get; set; } 6 | 7 | public string Description { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/Shared/PathogenTypeDto.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Tests.ReportedIssues.Shared 2 | { 3 | class PathogenTypeDto {} 4 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/Shared/VerbasResc.cs: -------------------------------------------------------------------------------- 1 | using JetBrains.Annotations; 2 | using System.Collections.Generic; 3 | 4 | namespace ExtendedXmlSerializer.Tests.ReportedIssues.Shared 5 | { 6 | public class VerbasResc 7 | { 8 | public List DmDev { [UsedImplicitly] get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/Shared/Worker.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Tests.ReportedIssues.Shared 2 | { 3 | class Backend {} 4 | 5 | class WorkerBackend {} 6 | 7 | class Worker 8 | { 9 | public string Name { get; set; } = "worker"; 10 | public WorkerBackend Backend { get; set; } = new WorkerBackend(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests.ReportedIssues/Support/ISerializationSupport.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Tests.ReportedIssues.Support 2 | { 3 | public interface ISerializationSupport : IExtendedXmlSerializer 4 | { 5 | T Assert(T instance, string expected); 6 | } 7 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests/FuturesTest.cs: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests/Support/ISerializationSupport.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Tests.Support 2 | { 3 | public interface ISerializationSupport : IExtendedXmlSerializer 4 | { 5 | T Assert(T instance, string expected); 6 | } 7 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests/TestObject/TestClassCollection.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | 3 | namespace ExtendedXmlSerializer.Tests.TestObject 4 | { 5 | public class TestClassCollection : Collection {} 6 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests/TestObject/TestClassTimeSpan.cs: -------------------------------------------------------------------------------- 1 | using JetBrains.Annotations; 2 | using System; 3 | 4 | namespace ExtendedXmlSerializer.Tests.TestObject 5 | { 6 | public class TestClassTimeSpan 7 | { 8 | public void Init() 9 | { 10 | TimeSpan = TimeSpan.FromMilliseconds(1561); 11 | } 12 | 13 | public TimeSpan TimeSpan { [UsedImplicitly] get; set; } 14 | } 15 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests/TestObject/TestClassWithArray.cs: -------------------------------------------------------------------------------- 1 | using JetBrains.Annotations; 2 | 3 | namespace ExtendedXmlSerializer.Tests.TestObject 4 | { 5 | public class TestClassWithArray 6 | { 7 | public int[] ArrayOfInt { [UsedImplicitly] get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests/TestObject/TestClassWithEncryptedData.cs: -------------------------------------------------------------------------------- 1 | using JetBrains.Annotations; 2 | 3 | namespace ExtendedXmlSerializer.Tests.TestObject 4 | { 5 | public class TestClassWithEncryptedData 6 | { 7 | public string Name { get; set; } 8 | public string Password { get; [UsedImplicitly] set; } 9 | public decimal Salary { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests/TestObject/TestClassWithObjectProperty.cs: -------------------------------------------------------------------------------- 1 | using JetBrains.Annotations; 2 | 3 | namespace ExtendedXmlSerializer.Tests.TestObject 4 | { 5 | public class TestClassWithObjectProperty 6 | { 7 | public object TestProperty { [UsedImplicitly] get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests/TestObject/TestClassWithReadOnlyCollectionProperty.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace ExtendedXmlSerializer.Tests.TestObject 4 | { 5 | public sealed class TestClassWithReadOnlyCollectionProperty 6 | { 7 | public IList Items { get; } = new List(); 8 | } 9 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests/TestObject/TestClassWithSerializer.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Tests.TestObject 2 | { 3 | public class TestClassWithSerializer 4 | { 5 | public TestClassWithSerializer(string paramStr, int paramInt) 6 | { 7 | PropStr = paramStr; 8 | PropInt = paramInt; 9 | } 10 | 11 | public string PropStr { get; private set; } 12 | public int PropInt { get; private set; } 13 | } 14 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests/TestObject/TestClassWithXmlElementAttribute.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Serialization; 2 | 3 | namespace ExtendedXmlSerializer.Tests.TestObject 4 | { 5 | public class TestClassWithXmlElementAttribute 6 | { 7 | [XmlElement(ElementName = "Identifier")] 8 | public int Id { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests/TestObject/TestClassWithXmlRootAttribute.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Serialization; 2 | 3 | namespace ExtendedXmlSerializer.Tests.TestObject 4 | { 5 | [XmlRoot(ElementName = "TestClass")] 6 | public class TestClassWithXmlRootAttribute 7 | { 8 | public int Id { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests/TestObject/TestStruct.cs: -------------------------------------------------------------------------------- 1 | using JetBrains.Annotations; 2 | 3 | namespace ExtendedXmlSerializer.Tests.TestObject 4 | { 5 | public struct TestStruct 6 | { 7 | public void Init() 8 | { 9 | A = 1; 10 | B = 2; 11 | } 12 | 13 | public int A; 14 | public int B { [UsedImplicitly] get; set; } 15 | 16 | public const int C = 3; 17 | } 18 | } -------------------------------------------------------------------------------- /test/ExtendedXmlSerializer.Tests/Traits.cs: -------------------------------------------------------------------------------- 1 | namespace ExtendedXmlSerializer.Tests 2 | { 3 | public static class Traits 4 | { 5 | public const string Category = nameof(Category); 6 | 7 | public static class Categories 8 | { 9 | public const string Legacy = nameof(Legacy); 10 | } 11 | } 12 | } --------------------------------------------------------------------------------