swift 4:
Я добавил навигационный контроллер:
создать 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")
}
Сделайте другой интерфейс для этого.
Затем Вы получите что-то как:
public Pinger(IExtraConfiguration extraConfig)
{
timeout = extraconfig.TimeOut;
targetmachine = extraconfig.TargetMachine;
}
Я не знаю о других контейнерах МОК, но замок Windsor разрешает эти дополнительные параметры конструктора автоматически.
Я не уверен, является ли Ваша трудность типами значения или конкретным типом. Ни один не проблема. Вы не должны представлять интерфейс конфигурирования (полезно, если Вы хотите передать те же параметры нескольким объектам, но не в случае Вы дали). Так или иначе вот Виндзорский быстрый код, я уверен, что кто-то скоро отправит версию 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")
)
);
Это зависит. Контейнерный МОК StructureMap позволит Вам объявлять те зависимости при конфигурировании экземпляра в начале казни.
например, в реестре
ForRequestedType<Pinger>()
.TheDefault.Is.OfConcreteType<Pinger>()
.WithCtorArg("timeout").EqualTo(5000)
.WithCtorArg("targetMachine").EqualToAppSetting("machine");
В Spring можно искать значения свойств от файла свойств с помощью $ {propertyName} нотация
<bean class="blah.Pinger">
<constructor-arg value="${blah.timeout}"/>
<constructor-arg value="${blah.targetMachine}"/>
</bean>
В Spring.net та же функциональность обеспечивается PropertyPlaceholderConfigurer, который имеет тот же синтаксис и использует разделы значения имени в файлах конфигурации.