Подтвердить что ты не робот

Является ли обязательным ToConstant и вызывает InSingletonScope избыточным?

Хорошо, этот вопрос довольно просто сформулирован в названии.

Для локальной переменной factory:

var factory = Fluently.Configure()
...

Являются ли эти две строки эквивалентными:

Bind<ISessionFactory>().ToConstant(factory).InSingletonScope();

и

Bind<ISessionFactory>().ToConstant(factory);
4b9b3361

Ответ 1

В последней версии ninject, когда вы создаете привязку ToConstant, она автоматически устанавливает область действия Singleton. Таким образом, часть InSingletonScope() в вашем примере является избыточной. Из базы кода ninject:

    /// <summary>
    /// Indicates that the service should be bound to the specified constant value.
    /// </summary>
    /// <param name="value">The constant value.</param>
    public IBindingWhenInNamedWithOrOnSyntax<T> ToConstant(T value)
    {
        Binding.ProviderCallback = ctx => new ConstantProvider<T>(value);
        Binding.Target = BindingTarget.Constant;
        Binding.ScopeCallback = StandardScopeCallbacks.Singleton;

        return this;
    }