我正在使用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; }
// ...
}
答案 0 :(得分:3)
我不是100%我明白你的问题是什么。
但是,如果您只想在整个应用程序中使用单个IParisConnectionStringBuilder实例,请查看在NInject中注册为单例。
语法类似于:
Bind<IParisConnectionStringBuilder>().To<ParisConnectionStringBuilder>().InSingletonScope();