parent
67b43b4cfe
commit
ec18b35123
|
|
@ -0,0 +1,31 @@
|
||||||
|
// 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.Collections.ObjectModel;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNet.Mvc.Formatters
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a collection of formatters.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TFormatter">The type of formatters in the collection.</typeparam>
|
||||||
|
public class FormatterCollection<TFormatter> : Collection<TFormatter>
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes all formatters of the specified type.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">The type to remove.</typeparam>
|
||||||
|
public void RemoveType<T>() where T : TFormatter
|
||||||
|
{
|
||||||
|
for (var i = Count - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
var formatter = this[i];
|
||||||
|
if (formatter is T)
|
||||||
|
{
|
||||||
|
RemoveAt(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -25,8 +25,8 @@ namespace Microsoft.AspNet.Mvc
|
||||||
Conventions = new List<IApplicationModelConvention>();
|
Conventions = new List<IApplicationModelConvention>();
|
||||||
Filters = new FilterCollection();
|
Filters = new FilterCollection();
|
||||||
FormatterMappings = new FormatterMappings();
|
FormatterMappings = new FormatterMappings();
|
||||||
InputFormatters = new List<IInputFormatter>();
|
InputFormatters = new FormatterCollection<IInputFormatter>();
|
||||||
OutputFormatters = new List<IOutputFormatter>();
|
OutputFormatters = new FormatterCollection<IOutputFormatter>();
|
||||||
ModelBinders = new List<IModelBinder>();
|
ModelBinders = new List<IModelBinder>();
|
||||||
ModelMetadataDetailsProviders = new List<IMetadataDetailsProvider>();
|
ModelMetadataDetailsProviders = new List<IMetadataDetailsProvider>();
|
||||||
ModelValidatorProviders = new List<IModelValidatorProvider>();
|
ModelValidatorProviders = new List<IModelValidatorProvider>();
|
||||||
|
|
@ -61,7 +61,7 @@ namespace Microsoft.AspNet.Mvc
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a list of <see cref="IInputFormatter"/>s that are used by this application.
|
/// Gets a list of <see cref="IInputFormatter"/>s that are used by this application.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IList<IInputFormatter> InputFormatters { get; }
|
public FormatterCollection<IInputFormatter> InputFormatters { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the maximum number of validation errors that are allowed by this application before further
|
/// Gets or sets the maximum number of validation errors that are allowed by this application before further
|
||||||
|
|
@ -109,7 +109,7 @@ namespace Microsoft.AspNet.Mvc
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a list of <see cref="IOutputFormatter"/>s that are used by this application.
|
/// Gets a list of <see cref="IOutputFormatter"/>s that are used by this application.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IList<IOutputFormatter> OutputFormatters { get; }
|
public FormatterCollection<IOutputFormatter> OutputFormatters { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the flag which causes content negotiation to ignore Accept header
|
/// Gets or sets the flag which causes content negotiation to ignore Accept header
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
// 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 System.Threading.Tasks;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNet.Mvc.Formatters
|
||||||
|
{
|
||||||
|
public class FormatterCollectionTest
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void RemoveType_RemovesAllOfType()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var collection = new FormatterCollection<IOutputFormatter>
|
||||||
|
{
|
||||||
|
new TestOutputFormatter(),
|
||||||
|
new AnotherTestOutputFormatter(),
|
||||||
|
new TestOutputFormatter()
|
||||||
|
};
|
||||||
|
|
||||||
|
// Act
|
||||||
|
collection.RemoveType<TestOutputFormatter>();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
var formatter = Assert.Single(collection);
|
||||||
|
Assert.IsType(typeof(AnotherTestOutputFormatter), formatter);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class TestOutputFormatter : OutputFormatter
|
||||||
|
{
|
||||||
|
public override Task WriteResponseBodyAsync(OutputFormatterContext context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class AnotherTestOutputFormatter : OutputFormatter
|
||||||
|
{
|
||||||
|
public override Task WriteResponseBodyAsync(OutputFormatterContext context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue