c# - 究竟应该如何使用 IAppBuilder.CreatePerOwinContext<T>?

标签 c# dependency-injection owin

我对如何使用 OWIN CreatePerOwinContext 方法感到困惑。据我所知,这是一个穷人的 DI 机制。然而,我看不到如何使用它。

我们可以在启动序列中注册一个类型/实现,例如:

app.CreatePerOwinContext<IUserService>(() => {
     return new UserService() as IUserService;
});

那我们以后怎么解决。文档说它可以通过 Get 方法检索。但是Get<T>需要一个字符串参数,它是 Enviornment IDictionary 中该条目的键?在这种情况下我怎么知道 key ?

IUserService userService = context.Get<IUserService>(???);

最佳答案

您可以使用 typeof得到key参数:

HttpContext.GetOwinContext().Get<ApplicationDbContext>(typeof(ApplicationDbContext).ToString());

此外,Microsoft.AspNet.Identity.Owin程序集包含 Get<T>() 的无参数版本方法,因此如果您的项目中已有 ASP.NET Identity,则可以使用它。

关于c# - 究竟应该如何使用 IAppBuilder.CreatePerOwinContext<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32501238/

相关文章:

C# JSon 解析器错误

c# - 在多个属性上调用 .Sum() 的有效方法

java - Dagger 2 中的依赖项

asp.net-mvc - 将 Identity 与 Owin 用于 MVC 和 WebAPI 时的 Request.IsAuthenticated

c# - .NET OWIN 身份验证 - Cookie + Windows(事件目录)

c# - 尝试连接到 Microsoft Graph 时出现 "Failed to acquire token silently"错误

c# - 为什么我必须使用 UIElement.UpdateLayout?

c# - 统一命名映射问题

asp.net-mvc-4 - 处理注入(inject)的 HttpClient

c# - 将鼠标悬停在元素上以显示并单击隐藏元素