// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using Microsoft.AspNet.Mvc; using Microsoft.AspNet.Mvc.Formatters.Xml.Internal; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; namespace Microsoft.Extensions.DependencyInjection { /// /// Extension methods for adding XML formatters to MVC. /// public static class MvcXmlMvcCoreBuilderExtensions { /// /// Adds the XML DataContractSerializer formatters to MVC. /// /// The . /// The . public static IMvcCoreBuilder AddXmlDataContractSerializerFormatters(this IMvcCoreBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } AddXmlDataContractSerializerFormatterServices(builder.Services); return builder; } /// /// Adds the XML Serializer formatters to MVC. /// /// The . /// The . public static IMvcCoreBuilder AddXmlSerializerFormatters(this IMvcCoreBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } AddXmlSerializerFormatterServices(builder.Services); return builder; } // Internal for testing. internal static void AddXmlDataContractSerializerFormatterServices(IServiceCollection services) { services.TryAddEnumerable( ServiceDescriptor.Transient, MvcXmlDataContractSerializerMvcOptionsSetup>()); } // Internal for testing. internal static void AddXmlSerializerFormatterServices(IServiceCollection services) { services.TryAddEnumerable( ServiceDescriptor.Transient, MvcXmlSerializerMvcOptionsSetup>()); } } }