Как использовать griffin.mvccontrib.localization с Ninject
Я пытаюсь использовать MVC Contrib Localization в моем приложении Asp.net MVC, на данный момент он работает с файлами ресурсов, но я хочу использовать его с Sql Server,
Я проверяю этот учебник: http://www.codeproject.com/Articles/352583/Localization-in-ASP-NET-MVC-with-Griffin-MvcContri
но он использует Autofac в качестве контейнера IoC, который я не понимаю, кто-нибудь использовал его с Ninject? или кто-нибудь знает, как этот код Autofac может быть переведен в Ninject:
// Loads strings from repositories.
builder.RegisterType<RepositoryStringProvider>().AsImplementedInterfaces().InstancePerLifetimeScope();
builder.RegisterType<ViewLocalizer>().AsImplementedInterfaces().InstancePerLifetimeScope();
// Connection factory used by the SQL providers.
builder.RegisterInstance(new AdoNetConnectionFactory("DemoDb")).AsSelf();
builder.RegisterType<LocalizationDbContext>().AsImplementedInterfaces().InstancePerLifetimeScope();
// and the repositories
builder.RegisterType<SqlLocalizedTypesRepository>().AsImplementedInterfaces().InstancePerLifetimeScope();
builder.RegisterType<SqlLocalizedViewsRepository>().AsImplementedInterfaces().InstancePerLifetimeScope();
Заранее спасибо.
1 ответ
Я пытаюсь сделать то же самое в данный момент с пакетом Ninject.Web.MVC NuGet.
Я не уверен, что у Ninject есть что-то похожее на .AsImplementedInterfaces()
однако вы все равно можете сами связать интерфейсы, если это не так, это просто больше ручной работы, глядя на классы Griffin.MvcContrib и какие интерфейсы они реализуют.
Один пример для добавления в метод RegisterServices NinjectWebCommon:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ILocalizedStringProvider>()
.To<RepositoryStringProvider>().InRequestScope();
...
}
InRequestScope
Расширение ( https://github.com/ninject/Ninject.Web.Common/wiki/Inrequestscope) из того, что я прочитал, является наиболее близким к AutoFac. .InstancePerLifetimeScope()
http://code.google.com/p/autofac/wiki/InstanceScope
Что касается .RegisterInstance(new AdoNetConnectionFactory("DemoDb")).AsSelf();
E сть .ToSelf()
метод для Ninject, но я не совсем уверен, что эта линия делает пока сам.