Ninject:将私有成员作为构造函数参数传递

时间:2011-10-22 00:38:27

标签: asp.net-mvc dependency-injection ninject

我正在使用Ninject和ASP.NET MVC。基本上,我想将BaseController类中的受保护成员_connectionStringBuilder作为SourceCodeManager类的构造函数参数传递。

我基本上在控制器级别进行一些处理,然后我想将它传递给我的各种业务层类,如SourceCodeManager。

我知道这听起来有点时髦,但我基本上想要将相同的变量_connectionStringBuilder传递给我的所有Business Layer类。 (我正在尝试升级一个经典的ASP应用程序,它将用户名和密码存储在cookie中!)

 public class SourceCodeManager :  ParisDataAccessManager, ISourceCodeManager
    {
        SourceCodeManager(IParisConnectionStringBuilder connectionStringBuilder)
            : base(connectionStringBuilder)
        {

        }

        public List<SourceCodeList> GetManualSourceCodes()
        {
            using (var connection = new SqlConnection(connectionStringManager.GetConnectionString()))
            {
                connection.Open();
                var manualSourcesCodes = connection
                    .Query<SourceCodeList>("select source_cd, source_desc where feeder_system_cd = 'ME'")
                    .ToList();
                return manualSourcesCodes;
            }
        }
    }

public class BaseController : Controller
{
    [Inject]
    public IParisConnectionStringBuilder _connectionStringBuilder { get; set; }
    // ...
}

1 个答案:

答案 0 :(得分:3)

我不是100%我明白你的问题是什么。

但是,如果您只想在整个应用程序中使用单个IParisConnectionStringBuilder实例,请查看在NInject中注册为单例。

语法类似于:

Bind<IParisConnectionStringBuilder>().To<ParisConnectionStringBuilder>().InSingletonScope();