React to options changes

This commit is contained in:
Hao Kung 2015-09-02 14:07:06 -07:00
parent dd94d54e1d
commit 3ebdcc5f6f
73 changed files with 152 additions and 166 deletions

View File

@ -41,7 +41,7 @@ namespace Microsoft.AspNet.Mvc.ApiExplorer
IInlineConstraintResolver constraintResolver, IInlineConstraintResolver constraintResolver,
IModelMetadataProvider modelMetadataProvider) IModelMetadataProvider modelMetadataProvider)
{ {
_outputFormatters = optionsAccessor.Options.OutputFormatters; _outputFormatters = optionsAccessor.Value.OutputFormatters;
_constraintResolver = constraintResolver; _constraintResolver = constraintResolver;
_modelMetadataProvider = modelMetadataProvider; _modelMetadataProvider = modelMetadataProvider;
} }

View File

@ -252,7 +252,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
.HttpContext .HttpContext
.RequestServices .RequestServices
.GetRequiredService<IOptions<MvcOptions>>() .GetRequiredService<IOptions<MvcOptions>>()
.Options; .Value;
var respectAcceptHeader = true; var respectAcceptHeader = true;
if (options.RespectBrowserAcceptHeader == false if (options.RespectBrowserAcceptHeader == false
@ -311,7 +311,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
.HttpContext .HttpContext
.RequestServices .RequestServices
.GetRequiredService<IOptions<MvcOptions>>() .GetRequiredService<IOptions<MvcOptions>>()
.Options; .Value;
formatters = options.OutputFormatters; formatters = options.OutputFormatters;
} }
else else

View File

@ -22,7 +22,7 @@ namespace Microsoft.AspNet.Mvc.Actions
{ {
_controllerTypeProvider = controllerTypeProvider; _controllerTypeProvider = controllerTypeProvider;
_applicationModelProviders = applicationModelProviders.OrderBy(p => p.Order).ToArray(); _applicationModelProviders = applicationModelProviders.OrderBy(p => p.Order).ToArray();
_conventions = optionsAccessor.Options.Conventions; _conventions = optionsAccessor.Value.Conventions;
} }
public int Order public int Order

View File

@ -41,13 +41,13 @@ namespace Microsoft.AspNet.Mvc.Actions
_controllerFactory = controllerFactory; _controllerFactory = controllerFactory;
_filterProviders = filterProviders.OrderBy(item => item.Order).ToArray(); _filterProviders = filterProviders.OrderBy(item => item.Order).ToArray();
_argumentBinder = argumentBinder; _argumentBinder = argumentBinder;
_inputFormatters = optionsAccessor.Options.InputFormatters.ToArray(); _inputFormatters = optionsAccessor.Value.InputFormatters.ToArray();
_outputFormatters = optionsAccessor.Options.OutputFormatters.ToArray(); _outputFormatters = optionsAccessor.Value.OutputFormatters.ToArray();
_modelBinders = optionsAccessor.Options.ModelBinders.ToArray(); _modelBinders = optionsAccessor.Value.ModelBinders.ToArray();
_modelValidatorProviders = optionsAccessor.Options.ModelValidatorProviders.ToArray(); _modelValidatorProviders = optionsAccessor.Value.ModelValidatorProviders.ToArray();
_valueProviderFactories = optionsAccessor.Options.ValueProviderFactories.ToArray(); _valueProviderFactories = optionsAccessor.Value.ValueProviderFactories.ToArray();
_actionBindingContextAccessor = actionBindingContextAccessor; _actionBindingContextAccessor = actionBindingContextAccessor;
_maxModelValidationErrors = optionsAccessor.Options.MaxModelValidationErrors; _maxModelValidationErrors = optionsAccessor.Value.MaxModelValidationErrors;
_logger = loggerFactory.CreateLogger<ControllerActionInvoker>(); _logger = loggerFactory.CreateLogger<ControllerActionInvoker>();
_notifier = notifier; _notifier = notifier;
} }

View File

@ -15,7 +15,7 @@ namespace Microsoft.AspNet.Mvc.ApplicationModels
public AuthorizationApplicationModelProvider(IOptions<AuthorizationOptions> authorizationOptionsAccessor) public AuthorizationApplicationModelProvider(IOptions<AuthorizationOptions> authorizationOptionsAccessor)
{ {
_authorizationOptions = authorizationOptionsAccessor.Options; _authorizationOptions = authorizationOptionsAccessor.Value;
} }
public int Order { get { return DefaultOrder.DefaultFrameworkSortOrder + 10; } } public int Order { get { return DefaultOrder.DefaultFrameworkSortOrder + 10; } }

View File

@ -22,7 +22,7 @@ namespace Microsoft.AspNet.Mvc.ApplicationModels
public DefaultApplicationModelProvider(IOptions<MvcOptions> mvcOptionsAccessor) public DefaultApplicationModelProvider(IOptions<MvcOptions> mvcOptionsAccessor)
{ {
_globalFilters = mvcOptionsAccessor.Options.Filters; _globalFilters = mvcOptionsAccessor.Value.Filters;
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@ -108,12 +108,12 @@ namespace Microsoft.Framework.DependencyInjection
services.TryAddSingleton<IModelMetadataProvider, DefaultModelMetadataProvider>(); services.TryAddSingleton<IModelMetadataProvider, DefaultModelMetadataProvider>();
services.TryAdd(ServiceDescriptor.Transient<ICompositeMetadataDetailsProvider>(serviceProvider => services.TryAdd(ServiceDescriptor.Transient<ICompositeMetadataDetailsProvider>(serviceProvider =>
{ {
var options = serviceProvider.GetRequiredService<IOptions<MvcOptions>>().Options; var options = serviceProvider.GetRequiredService<IOptions<MvcOptions>>().Value;
return new DefaultCompositeMetadataDetailsProvider(options.ModelMetadataDetailsProviders); return new DefaultCompositeMetadataDetailsProvider(options.ModelMetadataDetailsProviders);
})); }));
services.TryAdd(ServiceDescriptor.Singleton<IObjectModelValidator>(serviceProvider => services.TryAdd(ServiceDescriptor.Singleton<IObjectModelValidator>(serviceProvider =>
{ {
var options = serviceProvider.GetRequiredService<IOptions<MvcOptions>>().Options; var options = serviceProvider.GetRequiredService<IOptions<MvcOptions>>().Value;
var modelMetadataProvider = serviceProvider.GetRequiredService<IModelMetadataProvider>(); var modelMetadataProvider = serviceProvider.GetRequiredService<IModelMetadataProvider>();
return new DefaultObjectValidator(options.ValidationExcludeFilters, modelMetadataProvider); return new DefaultObjectValidator(options.ValidationExcludeFilters, modelMetadataProvider);
})); }));

View File

@ -35,7 +35,7 @@ namespace Microsoft.AspNet.Mvc.Formatters
return; return;
} }
ContentType = options.Options.FormatterMappings.GetMediaTypeMappingForFormat(Format); ContentType = options.Value.FormatterMappings.GetMediaTypeMappingForFormat(Format);
} }
/// <summary> /// <summary>

View File

@ -19,7 +19,6 @@ namespace Microsoft.AspNet.Mvc
public MvcCoreMvcOptionsSetup() public MvcCoreMvcOptionsSetup()
: base(ConfigureMvc) : base(ConfigureMvc)
{ {
Order = DefaultOrder.DefaultFrameworkSortOrder;
} }
public static void ConfigureMvc(MvcOptions options) public static void ConfigureMvc(MvcOptions options)

View File

@ -15,7 +15,6 @@ namespace Microsoft.AspNet.Mvc
public MvcCoreRouteOptionsSetup() public MvcCoreRouteOptionsSetup()
: base(ConfigureRouting) : base(ConfigureRouting)
{ {
Order = DefaultOrder.DefaultFrameworkSortOrder;
} }
/// <summary> /// <summary>

View File

@ -94,7 +94,7 @@ namespace Microsoft.AspNet.Mvc
CacheProfile selectedProfile = null; CacheProfile selectedProfile = null;
if (CacheProfileName != null) if (CacheProfileName != null)
{ {
optionsAccessor.Options.CacheProfiles.TryGetValue(CacheProfileName, out selectedProfile); optionsAccessor.Value.CacheProfiles.TryGetValue(CacheProfileName, out selectedProfile);
if (selectedProfile == null) if (selectedProfile == null)
{ {
throw new InvalidOperationException(Resources.FormatCacheProfileNotFound(CacheProfileName)); throw new InvalidOperationException(Resources.FormatCacheProfileNotFound(CacheProfileName));

View File

@ -15,7 +15,6 @@ namespace Microsoft.AspNet.Mvc
public MvcDataAnnotationsMvcOptionsSetup() public MvcDataAnnotationsMvcOptionsSetup()
: base(ConfigureMvc) : base(ConfigureMvc)
{ {
Order = DefaultOrder.DefaultFrameworkSortOrder + 1;
} }
public static void ConfigureMvc(MvcOptions options) public static void ConfigureMvc(MvcOptions options)

View File

@ -94,7 +94,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
.HttpContext .HttpContext
.RequestServices .RequestServices
.GetRequiredService<IOptions<MvcJsonOptions>>() .GetRequiredService<IOptions<MvcJsonOptions>>()
.Options .Value
.SerializerSettings; .SerializerSettings;
} }

View File

@ -12,9 +12,8 @@ namespace Microsoft.AspNet.Mvc
public class MvcJsonMvcOptionsSetup : ConfigureOptions<MvcOptions> public class MvcJsonMvcOptionsSetup : ConfigureOptions<MvcOptions>
{ {
public MvcJsonMvcOptionsSetup(IOptions<MvcJsonOptions> jsonOptions) public MvcJsonMvcOptionsSetup(IOptions<MvcJsonOptions> jsonOptions)
: base((_) => ConfigureMvc(_, jsonOptions.Options.SerializerSettings)) : base((_) => ConfigureMvc(_, jsonOptions.Value.SerializerSettings))
{ {
Order = DefaultOrder.DefaultFrameworkSortOrder + 10;
} }
public static void ConfigureMvc(MvcOptions options, JsonSerializerSettings serializerSettings) public static void ConfigureMvc(MvcOptions options, JsonSerializerSettings serializerSettings)

View File

@ -19,7 +19,6 @@ namespace Microsoft.AspNet.Mvc
public MvcXmlDataContractSerializerMvcOptionsSetup() public MvcXmlDataContractSerializerMvcOptionsSetup()
: base(ConfigureMvc) : base(ConfigureMvc)
{ {
Order = DefaultOrder.DefaultFrameworkSortOrder + 10;
} }
/// <summary> /// <summary>

View File

@ -18,7 +18,6 @@ namespace Microsoft.AspNet.Mvc
public MvcXmlSerializerMvcOptionsSetup() public MvcXmlSerializerMvcOptionsSetup()
: base(ConfigureMvc) : base(ConfigureMvc)
{ {
Order = DefaultOrder.DefaultFrameworkSortOrder + 10;
} }
/// <summary> /// <summary>

View File

@ -19,8 +19,7 @@ namespace Microsoft.AspNet.Mvc.Localization.Internal
options => options =>
{ {
options.ViewLocationExpanders.Add(new LanguageViewLocationExpander(format)); options.ViewLocationExpanders.Add(new LanguageViewLocationExpander(format));
}, });
DefaultOrder.DefaultFrameworkSortOrder);
services.TryAdd(ServiceDescriptor.Singleton<IHtmlLocalizerFactory, HtmlLocalizerFactory>()); services.TryAdd(ServiceDescriptor.Singleton<IHtmlLocalizerFactory, HtmlLocalizerFactory>());
services.TryAdd(ServiceDescriptor.Transient(typeof(IHtmlLocalizer<>), typeof(HtmlLocalizer<>))); services.TryAdd(ServiceDescriptor.Transient(typeof(IHtmlLocalizer<>), typeof(HtmlLocalizer<>)));

View File

@ -22,7 +22,6 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
/// </summary> /// </summary>
/// <param name="fileProvider"><see cref="IFileProvider"/> used to locate Razor views.</param> /// <param name="fileProvider"><see cref="IFileProvider"/> used to locate Razor views.</param>
public CompilerCache([NotNull] IFileProvider fileProvider) public CompilerCache([NotNull] IFileProvider fileProvider)
{
_fileProvider = fileProvider; _fileProvider = fileProvider;
_cache = new MemoryCache(new MemoryCacheOptions { CompactOnMemoryPressure = false }); _cache = new MemoryCache(new MemoryCacheOptions { CompactOnMemoryPressure = false });
} }

View File

@ -39,7 +39,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
{ {
_compilationService = compilationService; _compilationService = compilationService;
_razorHost = razorHost; _razorHost = razorHost;
_fileProvider = viewEngineOptions.Options.FileProvider; _fileProvider = viewEngineOptions.Value.FileProvider;
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@ -63,7 +63,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
_libraryExporter = libraryExporter; _libraryExporter = libraryExporter;
_applicationReferences = new Lazy<List<MetadataReference>>(GetApplicationReferences); _applicationReferences = new Lazy<List<MetadataReference>>(GetApplicationReferences);
_compilerOptionsProvider = compilerOptionsProvider; _compilerOptionsProvider = compilerOptionsProvider;
_fileProvider = optionsAccessor.Options.FileProvider; _fileProvider = optionsAccessor.Value.FileProvider;
_classPrefix = host.MainClassNamePrefix; _classPrefix = host.MainClassNamePrefix;
} }

View File

@ -54,18 +54,5 @@ namespace Microsoft.Framework.DependencyInjection
return builder; return builder;
} }
public static IMvcBuilder AddPrecompiledRazorViews(
[NotNull] this IMvcBuilder builder,
[NotNull] params Assembly[] assemblies)
{
builder.Services.Replace(
ServiceDescriptor.Singleton<ICompilerCacheProvider>(serviceProvider =>
ActivatorUtilities.CreateInstance<PrecompiledViewsCompilerCacheProvider>(
serviceProvider,
assemblies.AsEnumerable())));
return builder;
}
} }
} }

View File

@ -20,7 +20,6 @@ namespace Microsoft.AspNet.Mvc.Razor
public MvcRazorMvcViewOptionsSetup(IServiceProvider serviceProvider) public MvcRazorMvcViewOptionsSetup(IServiceProvider serviceProvider)
: base(options => ConfigureMvc(serviceProvider, options)) : base(options => ConfigureMvc(serviceProvider, options))
{ {
Order = DefaultOrder.DefaultFrameworkSortOrder;
} }
/// <summary> /// <summary>

View File

@ -55,7 +55,7 @@ namespace Microsoft.AspNet.Mvc.Razor
{ {
_pageFactory = pageFactory; _pageFactory = pageFactory;
_viewFactory = viewFactory; _viewFactory = viewFactory;
_viewLocationExpanders = optionsAccessor.Options.ViewLocationExpanders; _viewLocationExpanders = optionsAccessor.Value.ViewLocationExpanders;
_viewLocationCache = viewLocationCache; _viewLocationCache = viewLocationCache;
} }

View File

@ -20,7 +20,6 @@ namespace Microsoft.AspNet.Mvc
public RazorViewEngineOptionsSetup(IApplicationEnvironment applicationEnvironment) public RazorViewEngineOptionsSetup(IApplicationEnvironment applicationEnvironment)
: base(options => ConfigureRazor(options, applicationEnvironment)) : base(options => ConfigureRazor(options, applicationEnvironment))
{ {
Order = DefaultOrder.DefaultFrameworkSortOrder;
} }
private static void ConfigureRazor(RazorViewEngineOptions razorOptions, private static void ConfigureRazor(RazorViewEngineOptions razorOptions,

View File

@ -89,7 +89,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
context, context,
ViewData, ViewData,
TempData, TempData,
options.Options.HtmlHelperOptions, options.Value.HtmlHelperOptions,
ContentType); ContentType);
} }
} }

View File

@ -69,7 +69,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
var response = context.HttpContext.Response; var response = context.HttpContext.Response;
var services = context.HttpContext.RequestServices; var services = context.HttpContext.RequestServices;
var htmlHelperOptions = services.GetRequiredService<IOptions<MvcViewOptions>>().Options.HtmlHelperOptions; var htmlHelperOptions = services.GetRequiredService<IOptions<MvcViewOptions>>().Value.HtmlHelperOptions;
var viewComponentHelper = services.GetRequiredService<IViewComponentHelper>(); var viewComponentHelper = services.GetRequiredService<IViewComponentHelper>();
var viewData = ViewData; var viewData = ViewData;

View File

@ -110,7 +110,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
context, context,
ViewData, ViewData,
TempData, TempData,
options.Options.HtmlHelperOptions, options.Value.HtmlHelperOptions,
ContentType); ContentType);
} }
} }

View File

@ -17,7 +17,6 @@ namespace Microsoft.AspNet.Mvc
public MvcViewOptionsSetup() public MvcViewOptionsSetup()
: base(ConfigureMvc) : base(ConfigureMvc)
{ {
Order = DefaultOrder.DefaultFrameworkSortOrder;
} }
public static void ConfigureMvc(MvcViewOptions options) public static void ConfigureMvc(MvcViewOptions options)

View File

@ -49,14 +49,14 @@ namespace Microsoft.AspNet.Mvc.Rendering
[NotNull] IHtmlEncoder htmlEncoder) [NotNull] IHtmlEncoder htmlEncoder)
{ {
_antiforgery = antiforgery; _antiforgery = antiforgery;
var clientValidatorProviders = optionsAccessor.Options.ClientModelValidatorProviders; var clientValidatorProviders = optionsAccessor.Value.ClientModelValidatorProviders;
_clientModelValidatorProvider = new CompositeClientModelValidatorProvider(clientValidatorProviders); _clientModelValidatorProvider = new CompositeClientModelValidatorProvider(clientValidatorProviders);
_metadataProvider = metadataProvider; _metadataProvider = metadataProvider;
_urlHelper = urlHelper; _urlHelper = urlHelper;
_htmlEncoder = htmlEncoder; _htmlEncoder = htmlEncoder;
// Underscores are fine characters in id's. // Underscores are fine characters in id's.
IdAttributeDotReplacement = optionsAccessor.Options.HtmlHelperOptions.IdAttributeDotReplacement; IdAttributeDotReplacement = optionsAccessor.Value.HtmlHelperOptions.IdAttributeDotReplacement;
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@ -18,7 +18,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
/// <param name="optionsAccessor">The options accessor for <see cref="MvcViewOptions"/>.</param> /// <param name="optionsAccessor">The options accessor for <see cref="MvcViewOptions"/>.</param>
public CompositeViewEngine(IOptions<MvcViewOptions> optionsAccessor) public CompositeViewEngine(IOptions<MvcViewOptions> optionsAccessor)
{ {
ViewEngines = optionsAccessor.Options.ViewEngines.ToArray(); ViewEngines = optionsAccessor.Value.ViewEngines.ToArray();
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@ -56,7 +56,7 @@ namespace Microsoft.AspNet.Mvc.ViewComponents
.HttpContext .HttpContext
.RequestServices .RequestServices
.GetRequiredService<IOptions<MvcJsonOptions>>() .GetRequiredService<IOptions<MvcJsonOptions>>()
.Options .Value
.SerializerSettings; .SerializerSettings;
} }

View File

@ -6,7 +6,6 @@ using System.Net.Http.Formatting;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using System.Web.Http; using System.Web.Http;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc;
using Microsoft.AspNet.Mvc.ModelBinding; using Microsoft.AspNet.Mvc.ModelBinding;
using Microsoft.AspNet.Mvc.WebApiCompatShim; using Microsoft.AspNet.Mvc.WebApiCompatShim;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
@ -244,7 +243,7 @@ namespace System.Net.Http
{ {
// Get the default formatters from options // Get the default formatters from options
var options = context.RequestServices.GetRequiredService<IOptions<WebApiCompatShimOptions>>(); var options = context.RequestServices.GetRequiredService<IOptions<WebApiCompatShimOptions>>();
formatters = options.Options.Formatters; formatters = options.Value.Formatters;
} }
var contentNegotiator = context.RequestServices.GetRequiredService<IContentNegotiator>(); var contentNegotiator = context.RequestServices.GetRequiredService<IContentNegotiator>();
@ -306,7 +305,7 @@ namespace System.Net.Http
// Get the default formatters from options // Get the default formatters from options
var options = context.RequestServices.GetRequiredService<IOptions<WebApiCompatShimOptions>>(); var options = context.RequestServices.GetRequiredService<IOptions<WebApiCompatShimOptions>>();
var formatters = options.Options.Formatters; var formatters = options.Value.Formatters;
var formatter = formatters.FindWriter(typeof(T), mediaType); var formatter = formatters.FindWriter(typeof(T), mediaType);
if (formatter == null) if (formatter == null)

View File

@ -13,15 +13,9 @@ namespace Microsoft.AspNet.Mvc.WebApiCompatShim
{ {
public static readonly string DefaultAreaName = "api"; public static readonly string DefaultAreaName = "api";
public int Order
{
// We want to run after the default MvcOptionsSetup.
get { return DefaultOrder.DefaultFrameworkSortOrder + 100; }
}
public string Name { get; set; } public string Name { get; set; }
public void Configure(MvcOptions options, string name = "") public void Configure(MvcOptions options)
{ {
// Add webapi behaviors to controllers with the appropriate attributes // Add webapi behaviors to controllers with the appropriate attributes
options.Conventions.Add(new WebApiActionConventionsApplicationModelConvention()); options.Conventions.Add(new WebApiActionConventionsApplicationModelConvention());
@ -42,7 +36,7 @@ namespace Microsoft.AspNet.Mvc.WebApiCompatShim
options.ValidationExcludeFilters.Add(typeof(HttpResponseMessage)); options.ValidationExcludeFilters.Add(typeof(HttpResponseMessage));
} }
public void Configure(WebApiCompatShimOptions options, string name = "") public void Configure(WebApiCompatShimOptions options)
{ {
// Add the default formatters // Add the default formatters
options.Formatters.AddRange(new MediaTypeFormatterCollection()); options.Formatters.AddRange(new MediaTypeFormatterCollection());

View File

@ -21,18 +21,26 @@ namespace Microsoft.Framework.DependencyInjection
builder.AddApiExplorer(); builder.AddApiExplorer();
builder.AddAuthorization(); builder.AddAuthorization();
builder.AddCors();
builder.AddDataAnnotations(); // Order added affects options setup order
// Default framework order
builder.AddFormatterMappings(); builder.AddFormatterMappings();
builder.AddJsonFormatters();
builder.AddViews(); builder.AddViews();
builder.AddRazorViewEngine(); builder.AddRazorViewEngine();
// +1 order
builder.AddDataAnnotations(); // +1 order
// +10 order
builder.AddJsonFormatters();
builder.AddCors();
if (setupAction != null) if (setupAction != null)
{ {
builder.Services.Configure(setupAction); builder.Services.Configure(setupAction);
} }
return new MvcBuilder(services); return new MvcBuilder(services);
} }
} }

View File

@ -1004,7 +1004,7 @@ namespace Microsoft.AspNet.Mvc.Description
} }
var optionsAccessor = new Mock<IOptions<MvcOptions>>(); var optionsAccessor = new Mock<IOptions<MvcOptions>>();
optionsAccessor.SetupGet(o => o.Options) optionsAccessor.SetupGet(o => o.Value)
.Returns(options); .Returns(options);
var constraintResolver = new Mock<IInlineConstraintResolver>(); var constraintResolver = new Mock<IInlineConstraintResolver>();

View File

@ -97,8 +97,9 @@ namespace Microsoft.AspNet.Mvc.ActionResults
httpContext.RequestServices = services.Object; httpContext.RequestServices = services.Object;
var optionsAccessor = new TestOptionsManager<MvcOptions>(); var optionsAccessor = new TestOptionsManager<MvcOptions>();
optionsAccessor.Options.OutputFormatters.Add(new StringOutputFormatter()); var optionsAccessor = new MockMvcOptionsAccessor();
optionsAccessor.Options.OutputFormatters.Add(new JsonOutputFormatter()); optionsAccessor.Value.OutputFormatters.Add(new StringOutputFormatter());
optionsAccessor.Value.OutputFormatters.Add(new JsonOutputFormatter());
services.Setup(p => p.GetService(typeof(IOptions<MvcOptions>))) services.Setup(p => p.GetService(typeof(IOptions<MvcOptions>)))
.Returns(optionsAccessor); .Returns(optionsAccessor);
services.Setup(s => s.GetService(typeof(ILogger<ObjectResult>))) services.Setup(s => s.GetService(typeof(ILogger<ObjectResult>)))
@ -106,7 +107,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
var actionBindingContext = new ActionBindingContext var actionBindingContext = new ActionBindingContext
{ {
OutputFormatters = optionsAccessor.Options.OutputFormatters OutputFormatters = optionsAccessor.Value.OutputFormatters
}; };
services.Setup(o => o.GetService(typeof(IActionBindingContextAccessor))) services.Setup(o => o.GetService(typeof(IActionBindingContextAccessor)))
.Returns(new ActionBindingContextAccessor() { ActionBindingContext = actionBindingContext }); .Returns(new ActionBindingContextAccessor() { ActionBindingContext = actionBindingContext });

View File

@ -102,8 +102,8 @@ namespace Microsoft.AspNet.Mvc.ActionResults
httpContext.Setup(o => o.Request) httpContext.Setup(o => o.Request)
.Returns(request); .Returns(request);
var optionsAccessor = new TestOptionsManager<MvcOptions>(); var optionsAccessor = new TestOptionsManager<MvcOptions>();
optionsAccessor.Options.OutputFormatters.Add(new StringOutputFormatter()); optionsAccessor.Value.OutputFormatters.Add(new StringOutputFormatter());
optionsAccessor.Options.OutputFormatters.Add(new JsonOutputFormatter()); optionsAccessor.Value.OutputFormatters.Add(new JsonOutputFormatter());
httpContext.Setup(o => o.RequestServices.GetService(typeof(IOptions<MvcOptions>))) httpContext.Setup(o => o.RequestServices.GetService(typeof(IOptions<MvcOptions>)))
.Returns(optionsAccessor); .Returns(optionsAccessor);
httpContext.Setup(o => o.RequestServices.GetService(typeof(ILogger<ObjectResult>))) httpContext.Setup(o => o.RequestServices.GetService(typeof(ILogger<ObjectResult>)))

View File

@ -90,8 +90,8 @@ namespace Microsoft.AspNet.Mvc.ActionResults
httpContext.Setup(o => o.Response) httpContext.Setup(o => o.Response)
.Returns(response); .Returns(response);
var optionsAccessor = new TestOptionsManager<MvcOptions>(); var optionsAccessor = new TestOptionsManager<MvcOptions>();
optionsAccessor.Options.OutputFormatters.Add(new StringOutputFormatter()); optionsAccessor.Value.OutputFormatters.Add(new StringOutputFormatter());
optionsAccessor.Options.OutputFormatters.Add(new JsonOutputFormatter()); optionsAccessor.Value.OutputFormatters.Add(new JsonOutputFormatter());
httpContext httpContext
.Setup(p => p.RequestServices.GetService(typeof(IOptions<MvcOptions>))) .Setup(p => p.RequestServices.GetService(typeof(IOptions<MvcOptions>)))
.Returns(optionsAccessor); .Returns(optionsAccessor);
@ -101,7 +101,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
var actionBindingContext = new ActionBindingContext() var actionBindingContext = new ActionBindingContext()
{ {
OutputFormatters = optionsAccessor.Options.OutputFormatters OutputFormatters = optionsAccessor.Value.OutputFormatters
}; };
httpContext httpContext
.Setup(o => o.RequestServices.GetService(typeof(IActionBindingContextAccessor))) .Setup(o => o.RequestServices.GetService(typeof(IActionBindingContextAccessor)))

View File

@ -89,14 +89,14 @@ namespace Microsoft.AspNet.Mvc.ActionResults
httpContext.Setup(o => o.Request).Returns(request); httpContext.Setup(o => o.Request).Returns(request);
httpContext.Setup(o => o.RequestServices).Returns(GetServiceProvider()); httpContext.Setup(o => o.RequestServices).Returns(GetServiceProvider());
var optionsAccessor = new TestOptionsManager<MvcOptions>(); var optionsAccessor = new TestOptionsManager<MvcOptions>();
optionsAccessor.Options.OutputFormatters.Add(new StringOutputFormatter()); optionsAccessor.Value.OutputFormatters.Add(new StringOutputFormatter());
optionsAccessor.Options.OutputFormatters.Add(new JsonOutputFormatter()); optionsAccessor.Value.OutputFormatters.Add(new JsonOutputFormatter());
optionsAccessor.Options.RespectBrowserAcceptHeader = respectBrowserAcceptHeader; optionsAccessor.Value.RespectBrowserAcceptHeader = respectBrowserAcceptHeader;
var actionBindingContextAccessor = new ActionBindingContextAccessor() var actionBindingContextAccessor = new ActionBindingContextAccessor()
{ {
ActionBindingContext = new ActionBindingContext() ActionBindingContext = new ActionBindingContext()
{ {
OutputFormatters = optionsAccessor.Options.OutputFormatters OutputFormatters = optionsAccessor.Value.OutputFormatters
} }
}; };
@ -114,7 +114,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
{ {
var options = new MvcOptions(); var options = new MvcOptions();
var optionsAccessor = new Mock<IOptions<MvcOptions>>(); var optionsAccessor = new Mock<IOptions<MvcOptions>>();
optionsAccessor.SetupGet(o => o.Options).Returns(options); optionsAccessor.SetupGet(o => o.Value).Returns(options);
var serviceCollection = new ServiceCollection(); var serviceCollection = new ServiceCollection();
serviceCollection.AddInstance(optionsAccessor.Object); serviceCollection.AddInstance(optionsAccessor.Object);

View File

@ -76,12 +76,12 @@ namespace Microsoft.AspNet.Mvc.ActionResults
new Logger<ObjectResult>(NullLoggerFactory.Instance))); new Logger<ObjectResult>(NullLoggerFactory.Instance)));
var optionsAccessor = new TestOptionsManager<MvcOptions>(); var optionsAccessor = new TestOptionsManager<MvcOptions>();
optionsAccessor.Options.OutputFormatters.Add(new JsonOutputFormatter()); optionsAccessor.Value.OutputFormatters.Add(new JsonOutputFormatter());
services.Add(new ServiceDescriptor(typeof(IOptions<MvcOptions>), optionsAccessor)); services.Add(new ServiceDescriptor(typeof(IOptions<MvcOptions>), optionsAccessor));
var bindingContext = new ActionBindingContext var bindingContext = new ActionBindingContext
{ {
OutputFormatters = optionsAccessor.Options.OutputFormatters, OutputFormatters = optionsAccessor.Value.OutputFormatters,
}; };
var bindingContextAccessor = new ActionBindingContextAccessor var bindingContextAccessor = new ActionBindingContextAccessor
{ {

View File

@ -899,10 +899,10 @@ namespace Microsoft.AspNet.Mvc.ActionResults
var optionsAccessor = new TestOptionsManager<MvcOptions>(); var optionsAccessor = new TestOptionsManager<MvcOptions>();
foreach (var formatter in outputFormatters) foreach (var formatter in outputFormatters)
{ {
optionsAccessor.Options.OutputFormatters.Add(formatter); optionsAccessor.Value.OutputFormatters.Add(formatter);
} }
optionsAccessor.Options.RespectBrowserAcceptHeader = respectBrowserAcceptHeader; optionsAccessor.Value.RespectBrowserAcceptHeader = respectBrowserAcceptHeader;
httpContext.Setup(o => o.RequestServices.GetService(typeof(IOptions<MvcOptions>))) httpContext.Setup(o => o.RequestServices.GetService(typeof(IOptions<MvcOptions>)))
.Returns(optionsAccessor); .Returns(optionsAccessor);
httpContext.Setup(o => o.RequestServices.GetService(typeof(ILogger<ObjectResult>))) httpContext.Setup(o => o.RequestServices.GetService(typeof(ILogger<ObjectResult>)))
@ -946,7 +946,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
{ {
var options = new MvcOptions(); var options = new MvcOptions();
var optionsAccessor = new Mock<IOptions<MvcOptions>>(); var optionsAccessor = new Mock<IOptions<MvcOptions>>();
optionsAccessor.SetupGet(o => o.Options).Returns(options); optionsAccessor.SetupGet(o => o.Value).Returns(options);
var serviceCollection = new ServiceCollection(); var serviceCollection = new ServiceCollection();
serviceCollection.AddInstance(optionsAccessor.Object); serviceCollection.AddInstance(optionsAccessor.Object);

View File

@ -1259,8 +1259,7 @@ namespace Microsoft.AspNet.Mvc.Actions
.Callback(() => { Assert.Equal(3, sequence++); }); .Callback(() => { Assert.Equal(3, sequence++); });
var options = new TestOptionsManager<MvcOptions>(); var options = new TestOptionsManager<MvcOptions>();
options.Options.Conventions.Add(applicationConvention.Object); options.Value.Conventions.Add(applicationConvention.Object);
var applicationModel = new ApplicationModel(); var applicationModel = new ApplicationModel();
@ -1281,7 +1280,7 @@ namespace Microsoft.AspNet.Mvc.Actions
actionModel.Parameters.Add(parameterModel); actionModel.Parameters.Add(parameterModel);
// Act // Act
ApplicationModelConventions.ApplyConventions(applicationModel, options.Options.Conventions); ApplicationModelConventions.ApplyConventions(applicationModel, options.Value.Conventions);
// Assert // Assert
Assert.Equal(4, sequence); Assert.Equal(4, sequence);
@ -1440,7 +1439,7 @@ namespace Microsoft.AspNet.Mvc.Actions
{ {
foreach (var filter in filters) foreach (var filter in filters)
{ {
options.Options.Filters.Add(filter); options.Value.Filters.Add(filter);
} }
} }
@ -1476,7 +1475,7 @@ namespace Microsoft.AspNet.Mvc.Actions
IApplicationModelConvention convention) IApplicationModelConvention convention)
{ {
var options = new TestOptionsManager<MvcOptions>(); var options = new TestOptionsManager<MvcOptions>();
options.Options.Conventions.Add(convention); options.Value.Conventions.Add(convention);
var controllerTypeProvider = new StaticControllerTypeProvider(new[] { controllerTypeInfo }); var controllerTypeProvider = new StaticControllerTypeProvider(new[] { controllerTypeInfo });
var modelProvider = new DefaultApplicationModelProvider(options); var modelProvider = new DefaultApplicationModelProvider(options);

View File

@ -2004,7 +2004,7 @@ namespace Microsoft.AspNet.Mvc.Actions
var optionsAccessor = new Mock<IOptions<MvcOptions>>(); var optionsAccessor = new Mock<IOptions<MvcOptions>>();
optionsAccessor optionsAccessor
.SetupGet(o => o.Options) .SetupGet(o => o.Value)
.Returns(options); .Returns(options);
httpContext httpContext

View File

@ -34,8 +34,8 @@ namespace Microsoft.AspNet.Mvc.ApplicationModels
{ {
// Arrange // Arrange
var options = new TestOptionsManager<AuthorizationOptions>(); var options = new TestOptionsManager<AuthorizationOptions>();
options.Options.AddPolicy("Base", policy => policy.RequireClaim("Basic").RequireClaim("Basic2")); options.Value.AddPolicy("Base", policy => policy.RequireClaim("Basic").RequireClaim("Basic2"));
options.Options.AddPolicy("Derived", policy => policy.RequireClaim("Derived")); options.Value.AddPolicy("Derived", policy => policy.RequireClaim("Derived"));
var provider = new AuthorizationApplicationModelProvider(options); var provider = new AuthorizationApplicationModelProvider(options);
var defaultProvider = new DefaultApplicationModelProvider(new TestOptionsManager<MvcOptions>()); var defaultProvider = new DefaultApplicationModelProvider(new TestOptionsManager<MvcOptions>());

View File

@ -1219,7 +1219,7 @@ namespace Microsoft.AspNet.Mvc.ApplicationModels
IOptions<MvcOptions> options) IOptions<MvcOptions> options)
: base(options) : base(options)
{ {
Options = options.Options; Options = options.Value;
} }
public MvcOptions Options { get; } public MvcOptions Options { get; }

View File

@ -388,7 +388,7 @@ namespace Microsoft.AspNet.Mvc.Formatters
OptionsManager = new TestOptionsManager<MvcOptions>(); OptionsManager = new TestOptionsManager<MvcOptions>();
// Setup options on mock service provider // Setup options on mock service provider
Options = OptionsManager.Options; Options = OptionsManager.Value;
// Set up default output formatters. // Set up default output formatters.
Options.OutputFormatters.Add(new HttpNoContentOutputFormatter()); Options.OutputFormatters.Add(new HttpNoContentOutputFormatter());

View File

@ -0,0 +1,17 @@
// 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 Microsoft.Framework.OptionsModel;
namespace Microsoft.AspNet.Mvc
{
public class MockMvcOptionsAccessor : IOptions<MvcOptions>
{
public MockMvcOptionsAccessor()
{
Value = new MvcOptions();
}
public MvcOptions Value { get; private set; }
}
}

View File

@ -189,7 +189,7 @@ namespace Microsoft.AspNet.Mvc
{ {
foreach (var p in cacheProfiles) foreach (var p in cacheProfiles)
{ {
optionsAccessor.Options.CacheProfiles.Add(p.Key, p.Value); optionsAccessor.Value.CacheProfiles.Add(p.Key, p.Value);
} }
} }

View File

@ -60,7 +60,7 @@ namespace Microsoft.AspNet.Mvc.Routing
private static decimal Compute(string template) private static decimal Compute(string template)
{ {
var options = new Mock<IOptions<RouteOptions>>(); var options = new Mock<IOptions<RouteOptions>>();
options.SetupGet(o => o.Options).Returns(new RouteOptions()); options.SetupGet(o => o.Value).Returns(new RouteOptions());
var parsed = TemplateParser.Parse(template); var parsed = TemplateParser.Parse(template);
return AttributeRoutePrecedence.Compute(parsed); return AttributeRoutePrecedence.Compute(parsed);

View File

@ -186,7 +186,7 @@ namespace Microsoft.AspNet.Mvc.Routing
var routeOptions = new Mock<IOptions<RouteOptions>>(); var routeOptions = new Mock<IOptions<RouteOptions>>();
routeOptions routeOptions
.SetupGet(o => o.Options) .SetupGet(o => o.Value)
.Returns(new RouteOptions()); .Returns(new RouteOptions());
services services

View File

@ -1729,7 +1729,7 @@ namespace Microsoft.AspNet.Mvc.Routing
{ {
var options = new RouteOptions(); var options = new RouteOptions();
var optionsMock = new Mock<IOptions<RouteOptions>>(); var optionsMock = new Mock<IOptions<RouteOptions>>();
optionsMock.SetupGet(o => o.Options).Returns(options); optionsMock.SetupGet(o => o.Value).Returns(options);
return new DefaultInlineConstraintResolver(optionsMock.Object); return new DefaultInlineConstraintResolver(optionsMock.Object);
} }

View File

@ -951,7 +951,7 @@ namespace Microsoft.AspNet.Mvc
var optionsAccessor = new Mock<IOptions<RouteOptions>>(); var optionsAccessor = new Mock<IOptions<RouteOptions>>();
optionsAccessor optionsAccessor
.SetupGet(o => o.Options) .SetupGet(o => o.Value)
.Returns(new RouteOptions()); .Returns(new RouteOptions());
services services
.Setup(s => s.GetService(typeof(IOptions<RouteOptions>))) .Setup(s => s.GetService(typeof(IOptions<RouteOptions>)))

View File

@ -59,7 +59,7 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
public static IObjectModelValidator GetObjectValidator(MvcOptions options = null) public static IObjectModelValidator GetObjectValidator(MvcOptions options = null)
{ {
options = options ?? new TestMvcOptions().Options; options = options ?? new TestMvcOptions().Value;
options.MaxModelValidationErrors = 5; options.MaxModelValidationErrors = 5;
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
return new DefaultObjectValidator( return new DefaultObjectValidator(
@ -80,7 +80,7 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
httpContext.RequestServices.GetRequiredService<IActionContextAccessor>(); httpContext.RequestServices.GetRequiredService<IActionContextAccessor>();
actionContextAccessor.ActionContext = actionContext; actionContextAccessor.ActionContext = actionContext;
var options = new TestMvcOptions().Options; var options = new TestMvcOptions().Value;
if (updateOptions != null) if (updateOptions != null)
{ {
updateOptions(options); updateOptions(options);

View File

@ -11,17 +11,12 @@ namespace Microsoft.AspNet.Mvc.IntegrationTests
{ {
public TestMvcOptions() public TestMvcOptions()
{ {
Options = new MvcOptions(); Value = new MvcOptions();
MvcCoreMvcOptionsSetup.ConfigureMvc(Options); MvcCoreMvcOptionsSetup.ConfigureMvc(Value);
MvcDataAnnotationsMvcOptionsSetup.ConfigureMvc(Options); MvcDataAnnotationsMvcOptionsSetup.ConfigureMvc(Value);
MvcJsonMvcOptionsSetup.ConfigureMvc(Options, SerializerSettingsProvider.CreateSerializerSettings()); MvcJsonMvcOptionsSetup.ConfigureMvc(Value, SerializerSettingsProvider.CreateSerializerSettings());
} }
public MvcOptions Options { get; } public MvcOptions Value { get; }
public MvcOptions GetNamedOptions(string name)
{
throw new NotImplementedException();
}
} }
} }

View File

@ -123,11 +123,13 @@ namespace Microsoft.AspNet.Mvc.Localization.Internal
Assert.Equal(typeof(IConfigureOptions<RazorViewEngineOptions>), services[0].ServiceType); Assert.Equal(typeof(IConfigureOptions<RazorViewEngineOptions>), services[0].ServiceType);
Assert.Equal(ServiceLifetime.Singleton, services[0].Lifetime); Assert.Equal(ServiceLifetime.Singleton, services[0].Lifetime);
Assert.Equal(0, ((IConfigureOptions<RazorViewEngineOptions>)services[0].ImplementationInstance).Order); // REVIEW: What should this be replaced with?
//Assert.Equal(0, ((IConfigureOptions<RazorViewEngineOptions>)services[0].ImplementationInstance).Order);
Assert.Equal(typeof(IConfigureOptions<RazorViewEngineOptions>), services[1].ServiceType); Assert.Equal(typeof(IConfigureOptions<RazorViewEngineOptions>), services[1].ServiceType);
Assert.Equal(ServiceLifetime.Singleton, services[1].Lifetime); Assert.Equal(ServiceLifetime.Singleton, services[1].Lifetime);
Assert.Equal(-1000, ((IConfigureOptions<RazorViewEngineOptions>)services[1].ImplementationInstance).Order); // REVIEW: What should this be replaced with?
//Assert.Equal(-1000, ((IConfigureOptions<RazorViewEngineOptions>)services[1].ImplementationInstance).Order);
Assert.Equal(typeof(IHtmlLocalizerFactory), services[2].ServiceType); Assert.Equal(typeof(IHtmlLocalizerFactory), services[2].ServiceType);
Assert.Equal(typeof(HtmlLocalizerFactory), services[2].ImplementationType); Assert.Equal(typeof(HtmlLocalizerFactory), services[2].ImplementationType);

View File

@ -218,7 +218,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
FileProvider = fileProvider ?? new TestFileProvider() FileProvider = fileProvider ?? new TestFileProvider()
}; };
var options = new Mock<IOptions<RazorViewEngineOptions>>(); var options = new Mock<IOptions<RazorViewEngineOptions>>();
options.SetupGet(o => o.Options) options.SetupGet(o => o.Value)
.Returns(razorViewEngineOptions); .Returns(razorViewEngineOptions);
return options.Object; return options.Object;

View File

@ -267,7 +267,7 @@ public class NotRazorPrefixType {}";
var fileProvider = new TestFileProvider(); var fileProvider = new TestFileProvider();
fileProvider.AddFile(viewPath, "view-content"); fileProvider.AddFile(viewPath, "view-content");
var options = new Mock<IOptions<RazorViewEngineOptions>>(); var options = new Mock<IOptions<RazorViewEngineOptions>>();
options.SetupGet(o => o.Options) options.SetupGet(o => o.Value)
.Returns(new RazorViewEngineOptions .Returns(new RazorViewEngineOptions
{ {
FileProvider = fileProvider FileProvider = fileProvider
@ -416,7 +416,7 @@ public class NotRazorPrefixType {}";
FileProvider = fileProvider ?? new TestFileProvider() FileProvider = fileProvider ?? new TestFileProvider()
}; };
var options = new Mock<IOptions<RazorViewEngineOptions>>(); var options = new Mock<IOptions<RazorViewEngineOptions>>();
options.SetupGet(o => o.Options) options.SetupGet(o => o.Value)
.Returns(razorViewEngineOptions); .Returns(razorViewEngineOptions);
return options.Object; return options.Object;

View File

@ -1112,7 +1112,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
} }
var optionsAccessor = new Mock<IOptions<RazorViewEngineOptions>>(); var optionsAccessor = new Mock<IOptions<RazorViewEngineOptions>>();
optionsAccessor.SetupGet(v => v.Options) optionsAccessor.SetupGet(v => v.Value)
.Returns(options); .Returns(options);
return optionsAccessor.Object; return optionsAccessor.Object;
} }

View File

@ -100,7 +100,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{ {
var mockOptions = new Mock<IOptions<MvcViewOptions>>(); var mockOptions = new Mock<IOptions<MvcViewOptions>>();
mockOptions mockOptions
.SetupGet(options => options.Options) .SetupGet(options => options.Value)
.Returns(new MvcViewOptions()); .Returns(new MvcViewOptions());
return mockOptions.Object; return mockOptions.Object;

View File

@ -193,8 +193,8 @@ namespace Microsoft.AspNet.Mvc
var services = GetServiceProvider(); var services = GetServiceProvider();
// Act // Act
var options = services.GetRequiredService<IOptions<MvcOptions>>().Options; var options = services.GetRequiredService<IOptions<MvcOptions>>().Value;
var jsonOptions = services.GetRequiredService<IOptions<MvcJsonOptions>>().Options; var jsonOptions = services.GetRequiredService<IOptions<MvcJsonOptions>>().Value;
// Assert // Assert
var jsonInputFormatters = options.InputFormatters.OfType<JsonInputFormatter>(); var jsonInputFormatters = options.InputFormatters.OfType<JsonInputFormatter>();
@ -214,7 +214,7 @@ namespace Microsoft.AspNet.Mvc
where T : class, new() where T : class, new()
{ {
var serviceProvider = GetServiceProvider(action); var serviceProvider = GetServiceProvider(action);
return serviceProvider.GetRequiredService<IOptions<T>>().Options; return serviceProvider.GetRequiredService<IOptions<T>>().Value;
} }
private static IServiceProvider GetServiceProvider(Action<IServiceCollection> action = null) private static IServiceProvider GetServiceProvider(Action<IServiceCollection> action = null)

View File

@ -199,7 +199,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
serviceProvider.Setup(s => s.GetService(typeof(IOptions<MvcViewOptions>))) serviceProvider.Setup(s => s.GetService(typeof(IOptions<MvcViewOptions>)))
.Returns(() => { .Returns(() => {
var optionsAccessor = new Mock<IOptions<MvcViewOptions>>(); var optionsAccessor = new Mock<IOptions<MvcViewOptions>>();
optionsAccessor.SetupGet(o => o.Options) optionsAccessor.SetupGet(o => o.Value)
.Returns(new MvcViewOptions()); .Returns(new MvcViewOptions());
return optionsAccessor.Object; return optionsAccessor.Object;
}); });
@ -226,7 +226,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
serviceProvider.Setup(s => s.GetService(typeof(IOptions<MvcViewOptions>))) serviceProvider.Setup(s => s.GetService(typeof(IOptions<MvcViewOptions>)))
.Returns(() => { .Returns(() => {
var optionsAccessor = new Mock<IOptions<MvcViewOptions>>(); var optionsAccessor = new Mock<IOptions<MvcViewOptions>>();
optionsAccessor.SetupGet(o => o.Options) optionsAccessor.SetupGet(o => o.Value)
.Returns(new MvcViewOptions()); .Returns(new MvcViewOptions());
return optionsAccessor.Object; return optionsAccessor.Object;
}); });

View File

@ -216,7 +216,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
serviceProvider.Setup(s => s.GetService(typeof(IOptions<MvcViewOptions>))) serviceProvider.Setup(s => s.GetService(typeof(IOptions<MvcViewOptions>)))
.Returns(() => { .Returns(() => {
var optionsAccessor = new Mock<IOptions<MvcViewOptions>>(); var optionsAccessor = new Mock<IOptions<MvcViewOptions>>();
optionsAccessor.SetupGet(o => o.Options) optionsAccessor.SetupGet(o => o.Value)
.Returns(new MvcViewOptions()); .Returns(new MvcViewOptions());
return optionsAccessor.Object; return optionsAccessor.Object;
}); });
@ -310,7 +310,7 @@ namespace Microsoft.AspNet.Mvc.ActionResults
.Returns(new Mock<ILogger<ViewResult>>().Object); .Returns(new Mock<ILogger<ViewResult>>().Object);
var optionsAccessor = new Mock<IOptions<MvcViewOptions>>(); var optionsAccessor = new Mock<IOptions<MvcViewOptions>>();
optionsAccessor.SetupGet(o => o.Options) optionsAccessor.SetupGet(o => o.Value)
.Returns(new MvcViewOptions()); .Returns(new MvcViewOptions());
serviceProvider.Setup(s => s.GetService(typeof(IOptions<MvcViewOptions>))) serviceProvider.Setup(s => s.GetService(typeof(IOptions<MvcViewOptions>)))

View File

@ -9,14 +9,9 @@ namespace Microsoft.AspNet.Mvc
{ {
public MockMvcViewOptionsAccessor() public MockMvcViewOptionsAccessor()
{ {
Options = new MvcViewOptions(); Value = new MvcViewOptions();
} }
public MvcViewOptions Options { get; private set; } public MvcViewOptions Value { get; private set; }
public MvcViewOptions GetNamedOptions(string name)
{
return Options;
}
} }
} }

View File

@ -574,7 +574,7 @@ namespace Microsoft.AspNet.Mvc
var routeOptions = new RouteOptions(); var routeOptions = new RouteOptions();
var accessor = new Mock<IOptions<RouteOptions>>(); var accessor = new Mock<IOptions<RouteOptions>>();
accessor accessor
.SetupGet(options => options.Options) .SetupGet(options => options.Value)
.Returns(routeOptions); .Returns(routeOptions);
serviceCollection.AddInstance<IOptions<RouteOptions>>(accessor.Object); serviceCollection.AddInstance<IOptions<RouteOptions>>(accessor.Object);

View File

@ -640,13 +640,13 @@ namespace Microsoft.AspNet.Mvc.Rendering
private static IHtmlGenerator GetGenerator(IModelMetadataProvider metadataProvider) private static IHtmlGenerator GetGenerator(IModelMetadataProvider metadataProvider)
{ {
var mvcViewOptionsAccessor = new Mock<IOptions<MvcViewOptions>>(); var mvcViewOptionsAccessor = new Mock<IOptions<MvcViewOptions>>();
mvcViewOptionsAccessor.SetupGet(accessor => accessor.Options).Returns(new MvcViewOptions()); mvcViewOptionsAccessor.SetupGet(accessor => accessor.Value).Returns(new MvcViewOptions());
var htmlEncoder = Mock.Of<IHtmlEncoder>(); var htmlEncoder = Mock.Of<IHtmlEncoder>();
var antiforgery = Mock.Of<IAntiforgery>(); var antiforgery = Mock.Of<IAntiforgery>();
var optionsAccessor = new Mock<IOptions<MvcOptions>>(); var optionsAccessor = new Mock<IOptions<MvcOptions>>();
optionsAccessor optionsAccessor
.SetupGet(o => o.Options) .SetupGet(o => o.Value)
.Returns(new MvcOptions()); .Returns(new MvcOptions());
return new DefaultHtmlGenerator( return new DefaultHtmlGenerator(

View File

@ -221,7 +221,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
options.ClientModelValidatorProviders.Add(new DataAnnotationsClientModelValidatorProvider()); options.ClientModelValidatorProviders.Add(new DataAnnotationsClientModelValidatorProvider());
var optionsAccessor = new Mock<IOptions<MvcViewOptions>>(); var optionsAccessor = new Mock<IOptions<MvcViewOptions>>();
optionsAccessor optionsAccessor
.SetupGet(o => o.Options) .SetupGet(o => o.Value)
.Returns(options); .Returns(options);
var serviceProvider = new Mock<IServiceProvider>(); var serviceProvider = new Mock<IServiceProvider>();

View File

@ -20,8 +20,8 @@ namespace Microsoft.AspNet.Mvc.Rendering
var viewEngine1 = Mock.Of<IViewEngine>(); var viewEngine1 = Mock.Of<IViewEngine>();
var viewEngine2 = Mock.Of<IViewEngine>(); var viewEngine2 = Mock.Of<IViewEngine>();
var optionsAccessor = new MockMvcViewOptionsAccessor(); var optionsAccessor = new MockMvcViewOptionsAccessor();
optionsAccessor.Options.ViewEngines.Add(viewEngine1); optionsAccessor.Value.ViewEngines.Add(viewEngine1);
optionsAccessor.Options.ViewEngines.Add(viewEngine2); optionsAccessor.Value.ViewEngines.Add(viewEngine2);
var compositeViewEngine = new CompositeViewEngine(optionsAccessor); var compositeViewEngine = new CompositeViewEngine(optionsAccessor);
// Act // Act
@ -58,7 +58,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
engine.Setup(e => e.FindView(It.IsAny<ActionContext>(), It.IsAny<string>())) engine.Setup(e => e.FindView(It.IsAny<ActionContext>(), It.IsAny<string>()))
.Returns(ViewEngineResult.NotFound(viewName, new[] { "controller/test-view" })); .Returns(ViewEngineResult.NotFound(viewName, new[] { "controller/test-view" }));
var optionsAccessor = new MockMvcViewOptionsAccessor(); var optionsAccessor = new MockMvcViewOptionsAccessor();
optionsAccessor.Options.ViewEngines.Add(engine.Object); optionsAccessor.Value.ViewEngines.Add(engine.Object);
var compositeViewEngine = new CompositeViewEngine(optionsAccessor); var compositeViewEngine = new CompositeViewEngine(optionsAccessor);
// Act // Act
@ -79,7 +79,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
engine.Setup(e => e.FindView(It.IsAny<ActionContext>(), It.IsAny<string>())) engine.Setup(e => e.FindView(It.IsAny<ActionContext>(), It.IsAny<string>()))
.Returns(ViewEngineResult.Found(viewName, view)); .Returns(ViewEngineResult.Found(viewName, view));
var optionsAccessor = new MockMvcViewOptionsAccessor(); var optionsAccessor = new MockMvcViewOptionsAccessor();
optionsAccessor.Options.ViewEngines.Add(engine.Object); optionsAccessor.Value.ViewEngines.Add(engine.Object);
var compositeViewEngine = new CompositeViewEngine(optionsAccessor); var compositeViewEngine = new CompositeViewEngine(optionsAccessor);
// Act // Act
@ -108,9 +108,9 @@ namespace Microsoft.AspNet.Mvc.Rendering
.Returns(ViewEngineResult.Found(viewName, view3)); .Returns(ViewEngineResult.Found(viewName, view3));
var optionsAccessor = new MockMvcViewOptionsAccessor(); var optionsAccessor = new MockMvcViewOptionsAccessor();
optionsAccessor.Options.ViewEngines.Add(engine1.Object); optionsAccessor.Value.ViewEngines.Add(engine1.Object);
optionsAccessor.Options.ViewEngines.Add(engine2.Object); optionsAccessor.Value.ViewEngines.Add(engine2.Object);
optionsAccessor.Options.ViewEngines.Add(engine3.Object); optionsAccessor.Value.ViewEngines.Add(engine3.Object);
var compositeViewEngine = new CompositeViewEngine(optionsAccessor); var compositeViewEngine = new CompositeViewEngine(optionsAccessor);
// Act // Act
@ -138,9 +138,9 @@ namespace Microsoft.AspNet.Mvc.Rendering
.Returns(ViewEngineResult.NotFound(viewName, new[] { "4", "5" })); .Returns(ViewEngineResult.NotFound(viewName, new[] { "4", "5" }));
var optionsAccessor = new MockMvcViewOptionsAccessor(); var optionsAccessor = new MockMvcViewOptionsAccessor();
optionsAccessor.Options.ViewEngines.Add(engine1.Object); optionsAccessor.Value.ViewEngines.Add(engine1.Object);
optionsAccessor.Options.ViewEngines.Add(engine2.Object); optionsAccessor.Value.ViewEngines.Add(engine2.Object);
optionsAccessor.Options.ViewEngines.Add(engine3.Object); optionsAccessor.Value.ViewEngines.Add(engine3.Object);
var compositeViewEngine = new CompositeViewEngine(optionsAccessor); var compositeViewEngine = new CompositeViewEngine(optionsAccessor);
// Act // Act
@ -197,7 +197,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
engine.Setup(e => e.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>())) engine.Setup(e => e.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
.Returns(ViewEngineResult.Found(viewName, view)); .Returns(ViewEngineResult.Found(viewName, view));
var optionsAccessor = new MockMvcViewOptionsAccessor(); var optionsAccessor = new MockMvcViewOptionsAccessor();
optionsAccessor.Options.ViewEngines.Add(engine.Object); optionsAccessor.Value.ViewEngines.Add(engine.Object);
var compositeViewEngine = new CompositeViewEngine(optionsAccessor); var compositeViewEngine = new CompositeViewEngine(optionsAccessor);
// Act // Act
@ -226,9 +226,9 @@ namespace Microsoft.AspNet.Mvc.Rendering
.Returns(ViewEngineResult.Found(viewName, view3)); .Returns(ViewEngineResult.Found(viewName, view3));
var optionsAccessor = new MockMvcViewOptionsAccessor(); var optionsAccessor = new MockMvcViewOptionsAccessor();
optionsAccessor.Options.ViewEngines.Add(engine1.Object); optionsAccessor.Value.ViewEngines.Add(engine1.Object);
optionsAccessor.Options.ViewEngines.Add(engine2.Object); optionsAccessor.Value.ViewEngines.Add(engine2.Object);
optionsAccessor.Options.ViewEngines.Add(engine3.Object); optionsAccessor.Value.ViewEngines.Add(engine3.Object);
var compositeViewEngine = new CompositeViewEngine(optionsAccessor); var compositeViewEngine = new CompositeViewEngine(optionsAccessor);
// Act // Act
@ -256,9 +256,9 @@ namespace Microsoft.AspNet.Mvc.Rendering
.Returns(ViewEngineResult.NotFound(viewName, new[] { "4", "5" })); .Returns(ViewEngineResult.NotFound(viewName, new[] { "4", "5" }));
var optionsAccessor = new MockMvcViewOptionsAccessor(); var optionsAccessor = new MockMvcViewOptionsAccessor();
optionsAccessor.Options.ViewEngines.Add(engine1.Object); optionsAccessor.Value.ViewEngines.Add(engine1.Object);
optionsAccessor.Options.ViewEngines.Add(engine2.Object); optionsAccessor.Value.ViewEngines.Add(engine2.Object);
optionsAccessor.Options.ViewEngines.Add(engine3.Object); optionsAccessor.Value.ViewEngines.Add(engine3.Object);
var compositeViewEngine = new CompositeViewEngine(optionsAccessor); var compositeViewEngine = new CompositeViewEngine(optionsAccessor);
// Act // Act

View File

@ -73,7 +73,7 @@ namespace System.Web.Http
options.OutputFormatters.Add(new JsonOutputFormatter()); options.OutputFormatters.Add(new JsonOutputFormatter());
var optionsAccessor = new Mock<IOptions<MvcOptions>>(); var optionsAccessor = new Mock<IOptions<MvcOptions>>();
optionsAccessor.SetupGet(o => o.Options) optionsAccessor.SetupGet(o => o.Value)
.Returns(options); .Returns(options);
var actionBindingContext = new ActionBindingContext { OutputFormatters = options.OutputFormatters }; var actionBindingContext = new ActionBindingContext { OutputFormatters = options.OutputFormatters };

View File

@ -73,7 +73,7 @@ namespace System.Web.Http
options.OutputFormatters.Add(new JsonOutputFormatter()); options.OutputFormatters.Add(new JsonOutputFormatter());
var optionsAccessor = new Mock<IOptions<MvcOptions>>(); var optionsAccessor = new Mock<IOptions<MvcOptions>>();
optionsAccessor.SetupGet(o => o.Options) optionsAccessor.SetupGet(o => o.Value)
.Returns(options); .Returns(options);
var actionBindingContext = new ActionBindingContext { OutputFormatters = options.OutputFormatters }; var actionBindingContext = new ActionBindingContext { OutputFormatters = options.OutputFormatters };

View File

@ -86,7 +86,7 @@ namespace System.Web.Http
options.OutputFormatters.Add(new JsonOutputFormatter()); options.OutputFormatters.Add(new JsonOutputFormatter());
var optionsAccessor = new Mock<IOptions<MvcOptions>>(); var optionsAccessor = new Mock<IOptions<MvcOptions>>();
optionsAccessor.SetupGet(o => o.Options) optionsAccessor.SetupGet(o => o.Value)
.Returns(options); .Returns(options);
var actionBindingContext = new ActionBindingContext { OutputFormatters = options.OutputFormatters }; var actionBindingContext = new ActionBindingContext { OutputFormatters = options.OutputFormatters };

View File

@ -74,7 +74,7 @@ namespace System.Web.Http
options.OutputFormatters.Add(new JsonOutputFormatter()); options.OutputFormatters.Add(new JsonOutputFormatter());
var optionsAccessor = new Mock<IOptions<MvcOptions>>(); var optionsAccessor = new Mock<IOptions<MvcOptions>>();
optionsAccessor.SetupGet(o => o.Options) optionsAccessor.SetupGet(o => o.Value)
.Returns(options); .Returns(options);
var actionBindingContext = new ActionBindingContext { OutputFormatters = options.OutputFormatters }; var actionBindingContext = new ActionBindingContext { OutputFormatters = options.OutputFormatters };

View File

@ -383,12 +383,12 @@ namespace System.Web.Http
var optionsAccessor = new Mock<IOptions<MvcOptions>>(); var optionsAccessor = new Mock<IOptions<MvcOptions>>();
optionsAccessor optionsAccessor
.SetupGet(o => o.Options) .SetupGet(o => o.Value)
.Returns(options); .Returns(options);
var authorizationOptionsAccessor = new Mock<IOptions<AuthorizationOptions>>(); var authorizationOptionsAccessor = new Mock<IOptions<AuthorizationOptions>>();
authorizationOptionsAccessor authorizationOptionsAccessor
.SetupGet(o => o.Options) .SetupGet(o => o.Value)
.Returns(new AuthorizationOptions()); .Returns(new AuthorizationOptions());
var modelProvider = new DefaultApplicationModelProvider(optionsAccessor.Object); var modelProvider = new DefaultApplicationModelProvider(optionsAccessor.Object);

View File

@ -68,7 +68,7 @@ namespace System.Net.Http
options.Formatters.AddRange(new MediaTypeFormatterCollection()); options.Formatters.AddRange(new MediaTypeFormatterCollection());
var optionsAccessor = new Mock<IOptions<WebApiCompatShimOptions>>(); var optionsAccessor = new Mock<IOptions<WebApiCompatShimOptions>>();
optionsAccessor.SetupGet(o => o.Options).Returns(options); optionsAccessor.SetupGet(o => o.Value).Returns(options);
services services
.Setup(s => s.GetService(typeof(IOptions<WebApiCompatShimOptions>))) .Setup(s => s.GetService(typeof(IOptions<WebApiCompatShimOptions>)))
@ -101,7 +101,7 @@ namespace System.Net.Http
options.Formatters.AddRange(new MediaTypeFormatterCollection()); options.Formatters.AddRange(new MediaTypeFormatterCollection());
var optionsAccessor = new Mock<IOptions<WebApiCompatShimOptions>>(); var optionsAccessor = new Mock<IOptions<WebApiCompatShimOptions>>();
optionsAccessor.SetupGet(o => o.Options).Returns(options); optionsAccessor.SetupGet(o => o.Value).Returns(options);
services services
.Setup(s => s.GetService(typeof(IOptions<WebApiCompatShimOptions>))) .Setup(s => s.GetService(typeof(IOptions<WebApiCompatShimOptions>)))
@ -322,7 +322,7 @@ namespace System.Net.Http
} }
var optionsAccessor = new Mock<IOptions<WebApiCompatShimOptions>>(); var optionsAccessor = new Mock<IOptions<WebApiCompatShimOptions>>();
optionsAccessor.SetupGet(o => o.Options).Returns(options); optionsAccessor.SetupGet(o => o.Value).Returns(options);
var services = new Mock<IServiceProvider>(MockBehavior.Strict); var services = new Mock<IServiceProvider>(MockBehavior.Strict);
services services