diff --git a/src/Microsoft.AspNet.Mvc.Abstractions/ModelBinding/IValueProviderFactory.cs b/src/Microsoft.AspNet.Mvc.Abstractions/ModelBinding/IValueProviderFactory.cs
index 08b05f1599..2af59b25f9 100644
--- a/src/Microsoft.AspNet.Mvc.Abstractions/ModelBinding/IValueProviderFactory.cs
+++ b/src/Microsoft.AspNet.Mvc.Abstractions/ModelBinding/IValueProviderFactory.cs
@@ -5,6 +5,9 @@ using System.Threading.Tasks;
namespace Microsoft.AspNet.Mvc.ModelBinding
{
+ ///
+ /// A factory for creating instances.
+ ///
public interface IValueProviderFactory
{
///
diff --git a/src/Microsoft.AspNet.Mvc.Core/Internal/MvcCoreMvcOptionsSetup.cs b/src/Microsoft.AspNet.Mvc.Core/Internal/MvcCoreMvcOptionsSetup.cs
index 457b153491..7fb6a96f1c 100644
--- a/src/Microsoft.AspNet.Mvc.Core/Internal/MvcCoreMvcOptionsSetup.cs
+++ b/src/Microsoft.AspNet.Mvc.Core/Internal/MvcCoreMvcOptionsSetup.cs
@@ -51,7 +51,7 @@ namespace Microsoft.AspNet.Mvc.Internal
options.OutputFormatters.Add(new StreamOutputFormatter());
// Set up ValueProviders
- options.ValueProviderFactories.Add(new RouteValueValueProviderFactory());
+ options.ValueProviderFactories.Add(new RouteValueProviderFactory());
options.ValueProviderFactories.Add(new QueryStringValueProviderFactory());
options.ValueProviderFactories.Add(new FormValueProviderFactory());
options.ValueProviderFactories.Add(new JQueryFormValueProviderFactory());
diff --git a/src/Microsoft.AspNet.Mvc.Core/ModelBinding/JQueryFormValueProvider.cs b/src/Microsoft.AspNet.Mvc.Core/ModelBinding/JQueryFormValueProvider.cs
index c30ac13e48..b1ca4db1c4 100644
--- a/src/Microsoft.AspNet.Mvc.Core/ModelBinding/JQueryFormValueProvider.cs
+++ b/src/Microsoft.AspNet.Mvc.Core/ModelBinding/JQueryFormValueProvider.cs
@@ -9,7 +9,7 @@ using Microsoft.Extensions.Primitives;
namespace Microsoft.AspNet.Mvc.ModelBinding
{
///
- /// An for form data stored in an .
+ /// An for jQuery formatted form data.
///
public class JQueryFormValueProvider : BindingSourceValueProvider, IEnumerableValueProvider
{
@@ -17,10 +17,10 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
private PrefixContainer _prefixContainer;
///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
///
/// The of the data.
- /// A delegate which provides the values to wrap.
+ /// The values.
/// The culture to return with ValueProviderResult instances.
public JQueryFormValueProvider(
BindingSource bindingSource,
diff --git a/src/Microsoft.AspNet.Mvc.Core/ModelBinding/JQueryFormValueProviderFactory.cs b/src/Microsoft.AspNet.Mvc.Core/ModelBinding/JQueryFormValueProviderFactory.cs
index 1c812b5790..7cf1303f4c 100644
--- a/src/Microsoft.AspNet.Mvc.Core/ModelBinding/JQueryFormValueProviderFactory.cs
+++ b/src/Microsoft.AspNet.Mvc.Core/ModelBinding/JQueryFormValueProviderFactory.cs
@@ -13,8 +13,12 @@ using Microsoft.Extensions.Primitives;
namespace Microsoft.AspNet.Mvc.ModelBinding
{
+ ///
+ /// A for .
+ ///
public class JQueryFormValueProviderFactory : IValueProviderFactory
{
+ ///
public Task GetValueProviderAsync(ActionContext context)
{
if (context == null)
@@ -34,9 +38,9 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
private static async Task CreateValueProviderAsync(HttpRequest request)
{
return new JQueryFormValueProvider(
- BindingSource.Form,
- await GetValueCollectionAsync(request),
- CultureInfo.CurrentCulture);
+ BindingSource.Form,
+ await GetValueCollectionAsync(request),
+ CultureInfo.CurrentCulture);
}
private static async Task> GetValueCollectionAsync(HttpRequest request)
diff --git a/src/Microsoft.AspNet.Mvc.Core/ModelBinding/DictionaryBasedValueProvider.cs b/src/Microsoft.AspNet.Mvc.Core/ModelBinding/RouteValueProvider.cs
similarity index 84%
rename from src/Microsoft.AspNet.Mvc.Core/ModelBinding/DictionaryBasedValueProvider.cs
rename to src/Microsoft.AspNet.Mvc.Core/ModelBinding/RouteValueProvider.cs
index ace0d4cf33..65b3bbf9e1 100644
--- a/src/Microsoft.AspNet.Mvc.Core/ModelBinding/DictionaryBasedValueProvider.cs
+++ b/src/Microsoft.AspNet.Mvc.Core/ModelBinding/RouteValueProvider.cs
@@ -2,28 +2,27 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
-using System.Collections.Generic;
using System.Globalization;
+using Microsoft.AspNet.Routing;
namespace Microsoft.AspNet.Mvc.ModelBinding
{
///
- /// An adapter for data stored in an
- /// .
+ /// An adapter for data stored in an .
///
- public class DictionaryBasedValueProvider : BindingSourceValueProvider
+ public class RouteValueProvider : BindingSourceValueProvider
{
- private readonly IDictionary _values;
+ private readonly RouteValueDictionary _values;
private PrefixContainer _prefixContainer;
///
- /// Creates a new .
+ /// Creates a new .
///
/// The of the data.
/// The values.
- public DictionaryBasedValueProvider(
+ public RouteValueProvider(
BindingSource bindingSource,
- IDictionary values)
+ RouteValueDictionary values)
: base(bindingSource)
{
if (bindingSource == null)
diff --git a/src/Microsoft.AspNet.Mvc.Core/ModelBinding/RouteValueValueProviderFactory.cs b/src/Microsoft.AspNet.Mvc.Core/ModelBinding/RouteValueProviderFactory.cs
similarity index 65%
rename from src/Microsoft.AspNet.Mvc.Core/ModelBinding/RouteValueValueProviderFactory.cs
rename to src/Microsoft.AspNet.Mvc.Core/ModelBinding/RouteValueProviderFactory.cs
index 2a0e0c12c5..803b2d5426 100644
--- a/src/Microsoft.AspNet.Mvc.Core/ModelBinding/RouteValueValueProviderFactory.cs
+++ b/src/Microsoft.AspNet.Mvc.Core/ModelBinding/RouteValueProviderFactory.cs
@@ -6,8 +6,12 @@ using System.Threading.Tasks;
namespace Microsoft.AspNet.Mvc.ModelBinding
{
- public class RouteValueValueProviderFactory : IValueProviderFactory
+ ///
+ /// A for creating instances.
+ ///
+ public class RouteValueProviderFactory : IValueProviderFactory
{
+ ///
public Task GetValueProviderAsync(ActionContext context)
{
if (context == null)
@@ -15,7 +19,7 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
throw new ArgumentNullException(nameof(context));
}
- return Task.FromResult(new DictionaryBasedValueProvider(
+ return Task.FromResult(new RouteValueProvider(
BindingSource.Path,
context.RouteData.Values));
}
diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/ModelBinding/DictionaryBasedValueProviderTests.cs b/test/Microsoft.AspNet.Mvc.Core.Test/ModelBinding/RouteValueProviderTests.cs
similarity index 68%
rename from test/Microsoft.AspNet.Mvc.Core.Test/ModelBinding/DictionaryBasedValueProviderTests.cs
rename to test/Microsoft.AspNet.Mvc.Core.Test/ModelBinding/RouteValueProviderTests.cs
index 01dd0baeca..f1397c661b 100644
--- a/test/Microsoft.AspNet.Mvc.Core.Test/ModelBinding/DictionaryBasedValueProviderTests.cs
+++ b/test/Microsoft.AspNet.Mvc.Core.Test/ModelBinding/RouteValueProviderTests.cs
@@ -3,22 +3,22 @@
using System;
using System.Collections.Generic;
-using System.Threading.Tasks;
+using Microsoft.AspNet.Routing;
using Xunit;
namespace Microsoft.AspNet.Mvc.ModelBinding
{
- public class DictionaryBasedValueProviderTests
+ public class RouteValueProviderTests
{
[Fact]
public void GetValueProvider_ReturnsNull_WhenKeyIsNotFound()
{
// Arrange
- var values = new Dictionary(StringComparer.OrdinalIgnoreCase)
+ var values = new RouteValueDictionary(new Dictionary
{
{ "test-key", "value" }
- };
- var provider = new DictionaryBasedValueProvider(BindingSource.Query, values);
+ });
+ var provider = new RouteValueProvider(BindingSource.Query, values);
// Act
var result = provider.GetValue("not-test-key");
@@ -31,11 +31,11 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
public void GetValueProvider_ReturnsValue_IfKeyIsPresent()
{
// Arrange
- var values = new Dictionary(StringComparer.OrdinalIgnoreCase)
+ var values = new RouteValueDictionary(new Dictionary
{
{ "test-key", "test-value" }
- };
- var provider = new DictionaryBasedValueProvider(BindingSource.Query, values);
+ });
+ var provider = new RouteValueProvider(BindingSource.Query, values);
// Act
var result = provider.GetValue("test-key");
@@ -48,11 +48,11 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
public void ContainsPrefix_ReturnsNullValue_IfKeyIsPresent()
{
// Arrange
- var values = new Dictionary(StringComparer.OrdinalIgnoreCase)
+ var values = new RouteValueDictionary(new Dictionary
{
{ "test-key", null }
- };
- var provider = new DictionaryBasedValueProvider(BindingSource.Query, values);
+ });
+ var provider = new RouteValueProvider(BindingSource.Query, values);
// Act
var result = provider.GetValue("test-key");
@@ -68,13 +68,13 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
public void ContainsPrefix_ReturnsTrue_ForKnownPrefixes(string prefix)
{
// Arrange
- var values = new Dictionary
+ var values = new RouteValueDictionary(new Dictionary
{
{ "foo", 1 },
{ "bar.baz", 1 },
- };
+ });
- var valueProvider = new DictionaryBasedValueProvider(BindingSource.Query, values);
+ var valueProvider = new RouteValueProvider(BindingSource.Query, values);
// Act
var result = valueProvider.ContainsPrefix(prefix);
@@ -89,13 +89,13 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
public void GetValue_ReturnsCorrectValue_ForKnownKeys(string prefix, string expectedValue)
{
// Arrange
- var values = new Dictionary
+ var values = new RouteValueDictionary(new Dictionary
{
{ "bar", 1 },
{ "bar.baz", 2 },
- };
+ });
- var valueProvider = new DictionaryBasedValueProvider(BindingSource.Query, values);
+ var valueProvider = new RouteValueProvider(BindingSource.Query, values);
// Act
var result = valueProvider.GetValue(prefix);
@@ -108,12 +108,12 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
public void GetValue_DoesNotReturnAValue_ForAKeyPrefix()
{
// Arrange
- var values = new Dictionary
+ var values = new RouteValueDictionary(new Dictionary
{
{ "bar.baz", 2 },
- };
+ });
- var valueProvider = new DictionaryBasedValueProvider(BindingSource.Query, values);
+ var valueProvider = new RouteValueProvider(BindingSource.Query, values);
// Act
var result = valueProvider.GetValue("bar");
@@ -126,11 +126,11 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
public void ContainsPrefix_ReturnsFalse_IfKeyIsNotPresent()
{
// Arrange
- var values = new Dictionary(StringComparer.OrdinalIgnoreCase)
+ var values = new RouteValueDictionary(new Dictionary
{
{ "test-key", "test-value" }
- };
- var provider = new DictionaryBasedValueProvider(BindingSource.Query, values);
+ });
+ var provider = new RouteValueProvider(BindingSource.Query, values);
// Act
var result = provider.ContainsPrefix("not-test-key");
@@ -143,11 +143,11 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
public void ContainsPrefix_ReturnsTrue_IfKeyIsPresent()
{
// Arrange
- var values = new Dictionary(StringComparer.OrdinalIgnoreCase)
+ var values = new RouteValueDictionary(new Dictionary
{
{ "test-key", "test-value" }
- };
- var provider = new DictionaryBasedValueProvider(BindingSource.Query, values);
+ });
+ var provider = new RouteValueProvider(BindingSource.Query, values);
// Act
var result = provider.ContainsPrefix("test-key");
@@ -160,8 +160,8 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
public void FilterInclude()
{
// Arrange
- var values = new Dictionary(StringComparer.OrdinalIgnoreCase);
- var provider = new DictionaryBasedValueProvider(BindingSource.Query, values);
+ var values = new RouteValueDictionary();
+ var provider = new RouteValueProvider(BindingSource.Query, values);
var bindingSource = new BindingSource(
BindingSource.Query.Id,
@@ -181,8 +181,8 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
public void FilterExclude()
{
// Arrange
- var values = new Dictionary(StringComparer.OrdinalIgnoreCase);
- var provider = new DictionaryBasedValueProvider(BindingSource.Query, values);
+ var values = new RouteValueDictionary();
+ var provider = new RouteValueProvider(BindingSource.Query, values);
var bindingSource = new BindingSource(
"Test",
diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/ModelBinding/TestValueProvider.cs b/test/Microsoft.AspNet.Mvc.Core.Test/ModelBinding/TestValueProvider.cs
index 1c379fb004..b4d02cbf23 100644
--- a/test/Microsoft.AspNet.Mvc.Core.Test/ModelBinding/TestValueProvider.cs
+++ b/test/Microsoft.AspNet.Mvc.Core.Test/ModelBinding/TestValueProvider.cs
@@ -2,10 +2,11 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
+using Microsoft.AspNet.Routing;
namespace Microsoft.AspNet.Mvc.ModelBinding
{
- public class TestValueProvider : DictionaryBasedValueProvider
+ public class TestValueProvider : RouteValueProvider
{
public static readonly BindingSource TestBindingSource = new BindingSource(
id: "Test",
@@ -14,12 +15,12 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
isFromRequest: true);
public TestValueProvider(IDictionary values)
- : base(TestBindingSource, values)
+ : base(TestBindingSource, new RouteValueDictionary(values))
{
}
public TestValueProvider(BindingSource bindingSource, IDictionary values)
- : base(bindingSource, values)
+ : base(bindingSource, new RouteValueDictionary(values))
{
}
}
diff --git a/test/Microsoft.AspNet.Mvc.Test/MvcOptionsSetupTest.cs b/test/Microsoft.AspNet.Mvc.Test/MvcOptionsSetupTest.cs
index cea9e9c1a0..49e1c5dcaf 100644
--- a/test/Microsoft.AspNet.Mvc.Test/MvcOptionsSetupTest.cs
+++ b/test/Microsoft.AspNet.Mvc.Test/MvcOptionsSetupTest.cs
@@ -4,24 +4,25 @@
using System;
using System.IO;
using System.Linq;
+using System.Threading;
+using System.Xml;
using System.Xml.Linq;
using Microsoft.AspNet.Hosting;
+using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc.Formatters;
using Microsoft.AspNet.Mvc.Internal;
using Microsoft.AspNet.Mvc.ModelBinding;
+using Microsoft.AspNet.Mvc.ModelBinding.Metadata;
using Microsoft.AspNet.Mvc.ModelBinding.Validation;
using Microsoft.AspNet.Mvc.Razor;
using Microsoft.Extensions.CompilationAbstractions;
-using Microsoft.Extensions.PlatformAbstractions;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
+using Microsoft.Extensions.PlatformAbstractions;
using Moq;
using Newtonsoft.Json.Linq;
using Xunit;
-using Microsoft.Extensions.Logging;
-using System.Threading;
-using Microsoft.AspNet.Http;
-using Microsoft.AspNet.Mvc.ModelBinding.Metadata;
namespace Microsoft.AspNet.Mvc
{
@@ -45,19 +46,18 @@ namespace Microsoft.AspNet.Mvc
var options = GetOptions();
// Assert
- var i = 0;
- Assert.Equal(11, options.ModelBinders.Count);
- Assert.IsType(typeof(BinderTypeBasedModelBinder), options.ModelBinders[i++]);
- Assert.IsType(typeof(ServicesModelBinder), options.ModelBinders[i++]);
- Assert.IsType(typeof(BodyModelBinder), options.ModelBinders[i++]);
- Assert.IsType(typeof(HeaderModelBinder), options.ModelBinders[i++]);
- Assert.IsType(typeof(SimpleTypeModelBinder), options.ModelBinders[i++]);
- Assert.IsType(typeof(CancellationTokenModelBinder), options.ModelBinders[i++]);
- Assert.IsType(typeof(ByteArrayModelBinder), options.ModelBinders[i++]);
- Assert.IsType(typeof(FormFileModelBinder), options.ModelBinders[i++]);
- Assert.IsType(typeof(FormCollectionModelBinder), options.ModelBinders[i++]);
- Assert.IsType(typeof(GenericModelBinder), options.ModelBinders[i++]);
- Assert.IsType(typeof(MutableObjectModelBinder), options.ModelBinders[i++]);
+ Assert.Collection(options.ModelBinders,
+ binder => Assert.IsType(binder),
+ binder => Assert.IsType(binder),
+ binder => Assert.IsType(binder),
+ binder => Assert.IsType(binder),
+ binder => Assert.IsType(binder),
+ binder => Assert.IsType(binder),
+ binder => Assert.IsType(binder),
+ binder => Assert.IsType(binder),
+ binder => Assert.IsType(binder),
+ binder => Assert.IsType(binder),
+ binder => Assert.IsType(binder));
}
[Fact]
@@ -68,11 +68,11 @@ namespace Microsoft.AspNet.Mvc
// Assert
var valueProviders = options.ValueProviderFactories;
- Assert.Equal(4, valueProviders.Count);
- Assert.IsType(valueProviders[0]);
- Assert.IsType(valueProviders[1]);
- Assert.IsType(valueProviders[2]);
- Assert.IsType(valueProviders[3]);
+ Assert.Collection(valueProviders,
+ provider => Assert.IsType(provider),
+ provider => Assert.IsType(provider),
+ provider => Assert.IsType(provider),
+ provider => Assert.IsType(provider));
}
[Fact]
@@ -82,11 +82,11 @@ namespace Microsoft.AspNet.Mvc
var options = GetOptions();
// Assert
- Assert.Equal(4, options.OutputFormatters.Count);
- Assert.IsType(options.OutputFormatters[0]);
- Assert.IsType(options.OutputFormatters[1]);
- Assert.IsType(options.OutputFormatters[2]);
- Assert.IsType(options.OutputFormatters[3]);
+ Assert.Collection(options.OutputFormatters,
+ formatter => Assert.IsType(formatter),
+ formatter => Assert.IsType(formatter),
+ formatter => Assert.IsType(formatter),
+ formatter => Assert.IsType(formatter));
}
[Fact]
@@ -96,9 +96,9 @@ namespace Microsoft.AspNet.Mvc
var options = GetOptions();
// Assert
- Assert.Equal(2, options.InputFormatters.Count);
- Assert.IsType(options.InputFormatters[0]);
- Assert.IsType(options.InputFormatters[1]);
+ Assert.Collection(options.InputFormatters,
+ formatter => Assert.IsType(formatter),
+ formatter => Assert.IsType(formatter));
}
[Fact]
@@ -108,9 +108,9 @@ namespace Microsoft.AspNet.Mvc
var options = GetOptions();
// Assert
- Assert.Equal(2, options.ModelValidatorProviders.Count);
- Assert.IsType(options.ModelValidatorProviders[0]);
- Assert.IsType(options.ModelValidatorProviders[1]);
+ Assert.Collection(options.ModelValidatorProviders,
+ validator => Assert.IsType(validator),
+ validator => Assert.IsType(validator));
}
[Fact]
@@ -120,10 +120,10 @@ namespace Microsoft.AspNet.Mvc
var options = GetOptions(AddDnxServices);
// Assert
- Assert.Equal(3, options.ClientModelValidatorProviders.Count);
- Assert.IsType(options.ClientModelValidatorProviders[0]);
- Assert.IsType(options.ClientModelValidatorProviders[1]);
- Assert.IsType(options.ClientModelValidatorProviders[2]);
+ Assert.Collection(options.ClientModelValidatorProviders,
+ validator => Assert.IsType(validator),
+ validator => Assert.IsType(validator),
+ validator => Assert.IsType(validator));
}
[Fact]
@@ -148,39 +148,51 @@ namespace Microsoft.AspNet.Mvc
// Assert
var providers = options.ModelMetadataDetailsProviders;
- Assert.Equal(12, providers.Count);
- var i = 0;
-
- Assert.IsType(providers[i++]);
- Assert.IsType(providers[i++]);
-
- var excludeFilter = Assert.IsType(providers[i++]);
- Assert.Equal(typeof(Type), excludeFilter.Type);
-
- excludeFilter = Assert.IsType(providers[i++]);
- Assert.Equal(typeof(Uri), excludeFilter.Type);
-
- excludeFilter = Assert.IsType(providers[i++]);
- Assert.Equal(typeof(CancellationToken), excludeFilter.Type);
-
- excludeFilter = Assert.IsType(providers[i++]);
- Assert.Equal(typeof(IFormFile), excludeFilter.Type);
-
- excludeFilter = Assert.IsType(providers[i++]);
- Assert.Equal(typeof(IFormCollection), excludeFilter.Type);
-
- Assert.IsType(providers[i++]);
-
- excludeFilter = Assert.IsType(providers[i++]);
- Assert.Equal(typeof(JToken), excludeFilter.Type);
-
- Assert.IsType(providers[i++]);
-
- excludeFilter = Assert.IsType(providers[i++]);
- Assert.Equal(typeof(XObject).FullName, excludeFilter.FullTypeName);
-
- excludeFilter = Assert.IsType(providers[i++]);
- Assert.Equal("System.Xml.XmlNode", excludeFilter.FullTypeName);
+ Assert.Collection(providers,
+ provider => Assert.IsType(provider),
+ provider => Assert.IsType(provider),
+ provider =>
+ {
+ var excludeFilter = Assert.IsType(provider);
+ Assert.Equal(typeof(Type), excludeFilter.Type);
+ },
+ provider =>
+ {
+ var excludeFilter = Assert.IsType(provider);
+ Assert.Equal(typeof(Uri), excludeFilter.Type);
+ },
+ provider =>
+ {
+ var excludeFilter = Assert.IsType(provider);
+ Assert.Equal(typeof(CancellationToken), excludeFilter.Type);
+ },
+ provider =>
+ {
+ var excludeFilter = Assert.IsType(provider);
+ Assert.Equal(typeof(IFormFile), excludeFilter.Type);
+ },
+ provider =>
+ {
+ var excludeFilter = Assert.IsType(provider);
+ Assert.Equal(typeof(IFormCollection), excludeFilter.Type);
+ },
+ provider => Assert.IsType(provider),
+ provider =>
+ {
+ var excludeFilter = Assert.IsType(provider);
+ Assert.Equal(typeof(JToken), excludeFilter.Type);
+ },
+ provider => Assert.IsType(provider),
+ provider =>
+ {
+ var excludeFilter = Assert.IsType(provider);
+ Assert.Equal(typeof(XObject).FullName, excludeFilter.FullTypeName);
+ },
+ provider =>
+ {
+ var excludeFilter = Assert.IsType(provider);
+ Assert.Equal(typeof(XmlNode).FullName, excludeFilter.FullTypeName);
+ });
}
[Fact]