我有 ac#aspnet mvc(不是核心)项目,我在其中使用存储库模式和依赖注入(ninject)。
这是控制器的示例:
public class MainController : Controller
{
ISecurityRepository _securityRepo = default(ISecurityRepository);
AppState _appState;
public MainController(ISecurityRepository securityRepo)
{
_securityRepo = securityRepo;
_appState = (AppState)Session["appstate"];
}
public ActionResult Employee(int employeeId)
{
var permissions = _securityRepo.GetEmployeePermissions(
employeeId,
_appState.userId,
_appState.sessionId);
return View(permissions);
}
public ActionResult Leave(int leaveId, int employeeId)
{
var permissions = _securityRepo.GetEmployeeLeavePermissions(
leaveId,
employeeId,
_appState.userId,
_appState.sessionId);
return View(permissions);
}
public ActionResult Holiday(int holidayId, int employeeId)
{
var permissions = _securityRepo.GetEmployeeHolidayPermissions(
holidayId,
employeeId,
_appState.userId,
_appState.sessionId);
return View(permissions);
}
}
ISecurityRepository正在注入并且工作完美,但我想要做的是获取我SecurityRepository的类值,而_appState无需每次都传递给每个方法。userIdcompanyId
这是我的SecurityRepository.cs
public class SecurityRepository : ISecurityRepository
{
public EmployeePermissions GetEmployeePermissions(int employeeId, int userId, int sessionId)
{
// ... some code here
return employeePermissions;
}
public EmployeeLeavePermissions GetEmployeeLeavePermissions(int leaveId, int employeeId, int userId, int sessionId)
{
// ... some code here
return employeeLeavePermissions;
}
public EmployeeHolidayPermissions GetEmployeeHolidayPermissions(int holidayId, int employeeId, int userId, int sessionId)
{
// ... some code here
return employeeHolidayPermissions;
}
// ... some more methods
}
我想做的是有这样的事情:
public class SecurityRepository : ISecurityRepository
{
// here have maybe a constructor that receives the AppState variable from MainController, or a public property
public EmployeePermissions GetEmployeePermissions(int employeeId)
{
// a way that I can user _appState here!!
return employeePermissions;
}
}
注入在NinjectWebCommon课堂内完成
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Bind(typeof(ISecurityRepository)).To(typeof(Data.SecurityRepository));
}
我可以遵循的任何建议或示例代码?