2016-09-30 14 views
-4

我有一个翻译服务,我需要公开一个属性,我想跨我的应用程序使用。如何使用MVC6依赖注入方法

services.AddScoped<IMyTranslator, MyTranslator>(); 

我使用services.AddScoped来注册这个接口及其实现。当我为MyTranslator的构造函数设置一个断点时,我可以看到这个类始终被初始化。

我无法使用AddSingleton,因为它在所有会话中共享。我无法更改一个用户的语言,因为另一个用户已经改变了一次语言。 我需要一种方法,每次会话都会初始化我的中间件。

+2

由于事情的立场你所问的问题不清楚,并且是关闭的候选人。你的问题是什么,你有什么问题或试图达到什么目的?当你说所有的时间都是初始化的时候,你的意思是每次在请求中使用接口时,这个类都被初始化了吗?你能告诉我们你用来注册服务的代码吗? – pwdst

+2

为了产生一个可以由社区回答的问题,用清晰的语言描述问题以及你想达到的目标,以及你已经尝试或研究过的任何东西。尽可能包含最低限度再现的代码示例。请参阅http://stackoverflow.com/help/how-to-ask – pwdst

回答

1

services.AddScoped已经作用于用户请求的范围,每当用户请求到达服务器时,就会创建一个实例来仅服务于此特定请求,而不是与其他用户共享。

+0

是的,我知道。我的中间件不需要再次创建,我仍然可以使用第一次创建的同一个实例。是否有任何方法调用services.AddSingleSession类似的东西 –

+0

我不明白,你需要使用中间件每个会话,但同时你不希望它为每个请求创建! –

+0

不,AddScoped现在可以工作,但实例总是相同的,那么不必每次创建它都不是吗?我在我的中间件上有一个名为current language的属性,我不能使用AddSingleton。我需要介于两者之间。 –