无法实例化实现类型

时间:2017-03-07 22:48:24

标签: .net asp.net-core asp.net-core-mvc

我正在尝试使用RequestCultureProvider(本质上是在ASP.NET Core 1.1中尝试从用户类中查找当前请求的UI文化)

我在ConfigureServices下的Startup.cs中有以下代码:

services.AddSingleton<IRequestCultureProvider, RequestCultureProvider>();

运行时抛出以下错误:

  

无法实例化实现类型   'Microsoft.AspNetCore.Localization.RequestCultureProvider'用于服务   输入'Microsoft.AspNetCore.Localization.IRequestCultureProvider

我如何解决这个问题?或者是否有另一种从用户类中获取CurrentUICulture 的方法。

具体例子表示赞赏。

1 个答案:

答案 0 :(得分:11)

Microsoft.AspNetCore.Localization.RequestCultureProvider是一个抽象类,因此不能像这样实例化。

我认为该框架的目的是让您使用Features而不是Services

var requestCultureFeature = context.Features.Get<IRequestCultureFeature>();

与添加设置功能的RequestLocalizationMiddleware一起使用。

RequestCultureProvider用于配置RequestLocalizeationMiddleware使用的RequestLocalizationOptions(使用DI作为IOptions<RequestLocalizationOptions>),因此它不打算作为服务自行解析