我有一个 ASP.NET Core 应用程序,我想根据所选的 Route 使用不同的策略。例如,如果有人导航到 /fr/Index 我想将法语翻译实现注入我的控制器。同样,当有人导航到 /de/Index 时,我希望注入德语翻译。
这是为了避免让我的控制器上的每一个操作都读取“语言”参数并将其传递。
从更高的层次来看,我想要这样的东西:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// Stuff here
app.MapWhen(
context => context.Request.Query["language"] == "fr",
builder =>
{
builder.Register<ILanguage>(FrenchLanguageImplementation);
});
app.MapWhen(
context => context.Request.Query["language"] == "de",
builder =>
{
builder.Register<ILanguage>(GermanLanguageImplementation);
});
}
不幸的是,看起来我没有在该级别获得 IoC 容器解析上下文。
PS:我使用 Lamar 作为 IoC。