ASP.NET MVCでNinjectを使用しています。基本的に、BaseControllerクラスの保護されたメンバー_connectionStringBuilderを、SourceCodeManagerクラスのコンストラクター引数として渡したいとします。Ninject:コンストラクタ引数としてプライベートメンバーを渡す
私は基本的にコントローラレベルでいくつかの処理を行い、それをSourceCodeManagerのようなさまざまなビジネスレイヤクラスに渡したいと思います。
これはちょっとファンキーですが、基本的に同じ変数_connectionStringBuilderをすべてのビジネスレイヤークラスに渡したいと思います。 (私は、彼らがクッキーにユーザー名とパスワードを保存する従来のASPアプリケーションをアップグレードしようとしています!)
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; }
// ...
}
おかげで、:
構文は次のようなものです! InSingletonScope()を使用してIPContextConnectionStringBuilderの具体的な実装をBaseControllerクラスに挿入し、同じインスタンスがすべてのビジネスレイヤークラスのコンストラクターに渡されるようにします。 – Abe