kotlin
interface MyPlugin {
fun doSomething()
}
fun MyPlugin.log(message: String) {
println("Logging: $message")
}
class MyModule : MagnetModule() {
override fun configure() {
bind(MyPlugin::class.java).to(MyPluginImpl::class.java)
}
}
class MyPluginImpl : MyPlugin {
override fun doSomething() {
println("Doing something...")
}
}
fun main() {
val magnetRuntime = MagnetRuntime()
magnetRuntime.addModule(MyModule())
val plugin = magnetRuntime.getInstance(MyPlugin::class.java)
plugin.doSomething()
plugin.log("Hello!")
}