Ninject: передать закрытый член в качестве аргумента конструктора - PullRequest
1 голос
/ 22 октября 2011

Я использую Ninject с ASP.NET MVC.По сути, я хочу передать защищенный член _connectionStringBuilder в классе BaseController в качестве аргумента конструктора классу SourceCodeManager.

Я в основном выполняю некоторую обработку на уровне контроллера, а затем хочу передать ее в различные бизнесклассы слоев, такие как SourceCodeManager.

Я знаю, это звучит немного странно, но я в основном хочу передать одну и ту же переменную _connectionStringBuilder всем моим классам бизнес-уровня.(Я пытаюсь обновить классическое приложение 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 Ответ

3 голосов
/ 22 октября 2011

Я не на 100% понимаю, что ваш вопрос.

Однако, если вам нужен только один экземпляр IParisConnectionStringBuilder во всем вашем приложении, посмотрите на регистрацию в NInject в качестве одиночного.

Синтаксис выглядит примерно так:

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