#c# #.net #asp.net-mvc
#c# #.net #asp.net-mvc
Вопрос:
Я действительно новичок в программировании на .net Core, и я столкнулся с этой проблемой, которую я не могу понять. Решение создается нормально, и появляется домашняя страница, но когда я выполняю какое-либо действие, например, пытаюсь войти в систему, я получаю эту ошибку: (AcademiejaarInst — это класс домена)
InvalidOperationException: No suitable constructor found for entity type 'AcademiejaarInst'. The following constructors had parameters that could not be bound to properties of the entity type: cannot bind 'localizer' in 'AcademiejaarInst(IStringLocalizer<SharedResource> localizer)'.
технический директор AcademiejaarInst
public class AcademiejaarInst
{
private static IStringLocalizer<SharedResource> _localizer;
public AcademiejaarInst(IStringLocalizer<SharedResource> localizer)
{
_localizer = localizer;
}
...
Это также имеет место, если я пытаюсь выполнить миграции. Очевидно, что что-то не так с внедрением локализации, но я не знаю почему. Это соответствующие LOCS в StartUp.cs
public void ConfigureServices(IServiceCollection services)
{
...
services.AddMvc(config => ... )
.AddViewLocalization(o => o.ResourcesPath = "Resources")
.AddDataAnnotationsLocalization(options => {
options.DataAnnotationLocalizerProvider = (type, factory) =>
factory.Create(typeof(SharedResource));
});
// I tried this but was absolutely not sure this would work.
services.AddTransient<AcademiejaarInst>();
services.AddSingleton<IStringLocalizer, StringLocalizer<SharedResource>>();
services.AddLocalization(o => o.ResourcesPath = "Resources");
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new[]
{
new CultureInfo("nl-BE")
};
options.DefaultRequestCulture = new RequestCulture("nl-BE", "nl_BE");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
...
}
Большое спасибо за любую помощь!
Ответ №1:
services.AddLocalization()
Вызов уже подключает соответствующие реализации для интерфейса IStringLocalizer<T>
, поэтому вам на самом деле не нужно вводить его самостоятельно, что, я полагаю, и является причиной ваших проблем.
Удаление строки, в которой вы вводите конкретную реализацию для IStringLocalizer
интерфейса, должно решить вашу проблему.
Комментарии:
1. Услуги. У меня работает AddLocalization () (y)
Ответ №2:
В конструкторе AcademiejaarInst вы ожидаете IStringLocalizer<SharedResource>
, но для этого типа нет конфигурации.
Если вы измените
services.AddSingleton<IStringLocalizer, StringLocalizer<SharedResource>>();
Для
services.AddSingleton(typeof(IStringLocalizer<SharedResource>), typeof(StringLocalizer<SharedResource));
это должно сработать
Комментарии:
1. Спасибо за ваш вклад, и я попробовал это, но я все еще получаю ту же ошибку…