dependency-injection - Ninject 构造函数参数

标签 dependency-injection ninject

我有这个界面:

public interface IUserProfileService
{
    // stuff
}

实现者:
public class UserProfileService : IUserProfileService
{
    private readonly string m_userName;

    public UserProfileService(string userName)
    {
        m_userName = userName;
    }
}

我需要将它注入(inject)到这样的 Controller 中:
public class ProfilesController : BaseController
{
    private readonly IUserProfileService m_profileService;

    public ProfilesController(IUserProfileService profileService)
    {
        m_profileService = profileService;
    }
}

我不知道如何将此接口(interface)及其实现注册到 Ninject 容器中,以便在 Ninject 初始化此服务的实例时传入 userName 参数。

有什么想法可以实现这一目标吗?

最佳答案

技术 ninject 的答案是使用构造函数参数,如下所示:

Bind<IUserProfileService>().To<UserProfileService>().WithConstructorArgument("userName", "karl");

当然,您需要弄清楚“karl”的来源。这真的取决于你的应用程序。也许它是一个网络应用程序,它在 HttpContex 上?我不知道。如果它变得相当复杂,那么您可能想要编写 IProvider 而不是进行常规绑定(bind)。

关于dependency-injection - Ninject 构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6322995/

相关文章:

c# - 自定义 AuthorizeAttribute Ninject 属性注入(inject)不起作用(注入(inject)的属性具有需要注入(inject)的子依赖服务)

c# - 依赖注入(inject)容器 - 如何保持可用

c# - 使用字符串的依赖注入(inject)(ninject),反模式?

binding - 基于 Ninject 约定的绑定(bind)

c# - ASP.NET Core 管道多线程

java - Dagger-2:如何根据其范围为同一对象类型创建不同的实例化?

java - 在 Guice 中绑定(bind)相同类型两次(例如包装器)以进行依赖注入(inject)的最佳方法是什么?

c# - 在多个 ninject 绑定(bind)中重用 SqlConnection

c# - 如何在不使用mvc3的构造函数模式的情况下从ninject获取资源

c# - 如何在不删除所有条件的情况下覆盖现有绑定(bind)?