代码之家  ›  专栏  ›  技术社区  ›  Muhammad Ahmed AbuTalib

具有多个声明的koin作用域?

  •  0
  • Muhammad Ahmed AbuTalib  · 技术社区  · 7 年前

    根据本文 https://insert-koin.io/docs/1.0/getting-started/android-scope/ 我们可以为对象创建作用域。这是一个例子。

    scope("session") { MyScopePresenter(get())}
    

    我的问题是,我们是否可以在每个范围内添加多个定义?我觉得我们不是。任何地方都没有这样的例子。

        scope("session") {  
           Something() 
         AnotherThing()}
    

    这不管用。我只能在没有注射东西的情况下注射另一个东西。

    为什么koin只允许每个范围有一个定义?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Demigod    7 年前

    当您将声明添加到 module { ... } 使用 single , factory scope 定义,它们在内部创建所谓的 BeanDefinition 对象。这个bean定义对象将提供声明对象的实例。各 比恩定义 对象将处理一个声明。那意味着你应该改变

    scope("session") {  
       Something() 
       AnotherThing()
    }
    

    进入之内

    scope("session") { Something() }
    scope("session") { AnotherThing() }
    

    为了让它工作。