我有这个界面:
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/