ivlevAstef / DITranquillity

Dependency injection for iOS (Swift)
MIT License
421 stars 32 forks source link

Extensions #83

Open ivlevAstef opened 7 years ago

ivlevAstef commented 7 years ago

Extensions - add additional capabilities, in runtime. Needs for other libraries

class VC: UIViewController {
  var presenter: Presenter!
}

// where get arg1?
class Presenter {
  let server: Server!
  let arg1: Int
  init(server: server, arg1: Int) {
    self.server = server
    self.arg1 = arg1
  }
}

showVC() {
  let runtimeArg1 = 125
  let runtimeArg2 = 125
  // extension variable need for retain Extension
  let extension = DIExtensions.resolve(filter: Presenter.self) { container in
    return Presenter(server: try! *container, arg1: runtimeArg1)
  } // if somebody resolve Presenter, then call extension
  // or
  let extension = DIExtensions.initial(filter: Presenter.self) { container in
    return Presenter(server: try! *container, arg1: runtimeArg1)
  } // if from somewhere get Presenter, then call extension

  let extension = DIExtensions.postInit(filter: Presenter.self) { container, presenter in
    presenter.arg2 = runtimeArg2
  } // if Presenter full create, then call extension

  let vc = storyboard.in...()
}
ivlevAstef commented 7 years ago

only from version 3.0.0

ivlevAstef commented 6 years ago

new idea - callback on register. Summary: callback initial callback injection replace initial append postInjection