Типы примитивов и контейнеры МОК

swift 4:

Я добавил навигационный контроллер: enter image description here

создать UIBarButtonItem на viewcontroller:

    override func viewDidLoad() {
    super.viewDidLoad()

    let leftBarButton = UIBarButtonItem(title: "Edit", style: .done, target: self, action: #selector(myLeftBarButtonItem(_:)))
    self.navigationItem.leftBarButtonItem = leftBarButton
}


@objc func myLeftBarButtonItem(_ sender:UIBarButtonItem!) {
    print("myLeftBarButtonItem")
}

enter image description here

6
задан Gerrie Schenck 29 January 2009 в 09:58
поделиться

4 ответа

Сделайте другой интерфейс для этого.

Затем Вы получите что-то как:

public Pinger(IExtraConfiguration extraConfig)
{
   timeout = extraconfig.TimeOut;
   targetmachine = extraconfig.TargetMachine;
}

Я не знаю о других контейнерах МОК, но замок Windsor разрешает эти дополнительные параметры конструктора автоматически.

4
ответ дан 10 December 2019 в 02:54
поделиться

Я не уверен, является ли Ваша трудность типами значения или конкретным типом. Ни один не проблема. Вы не должны представлять интерфейс конфигурирования (полезно, если Вы хотите передать те же параметры нескольким объектам, но не в случае Вы дали). Так или иначе вот Виндзорский быстрый код, я уверен, что кто-то скоро отправит версию XML.

container.Register(
            Component.For(typeof(Pinger))
                .ImplementedBy(typeof(Pinger))  // This might not be necessary
                .Parameters(Parameter.ForKey("timeout").Eq("5000"),
                            Parameter.ForKey("targetMachine").Eq("machine")
                )
            );
3
ответ дан 10 December 2019 в 02:54
поделиться

Это зависит. Контейнерный МОК StructureMap позволит Вам объявлять те зависимости при конфигурировании экземпляра в начале казни.

например, в реестре

ForRequestedType<Pinger>()
  .TheDefault.Is.OfConcreteType<Pinger>()
  .WithCtorArg("timeout").EqualTo(5000)
  .WithCtorArg("targetMachine").EqualToAppSetting("machine");
1
ответ дан 10 December 2019 в 02:54
поделиться

В Spring можно искать значения свойств от файла свойств с помощью $ {propertyName} нотация

<bean class="blah.Pinger">
    <constructor-arg value="${blah.timeout}"/>
    <constructor-arg value="${blah.targetMachine}"/>
</bean>

В Spring.net та же функциональность обеспечивается PropertyPlaceholderConfigurer, который имеет тот же синтаксис и использует разделы значения имени в файлах конфигурации.

1
ответ дан 10 December 2019 в 02:54
поделиться