У меня есть следующая конфигурация с вложенными расширениями
open class Config {
val api = ApiConfig()
fun api(action: Action<in ApiConfig>) = action.execute(api)
val uploadConfig = UploadConfig()
fun uploadConfig(action: Action<in UploadConfig>) = action.execute(uploadConfig)
}
data class ApiConfig(
var projectId: String = "",
var token: String = ""
)
open class UploadConfig {
var str: MutableList<String> = mutableListOf()
val uploadEntries: MutableList<UploadEntry> = mutableListOf()
fun uploadEntry(action: Action<in UploadEntry>) {
val newEntry = UploadEntry()
action.execute(newEntry)
uploadEntries.add(newEntry)
}
}
open class UploadEntry(
var lang: String = "",
var path: String = ""
)
И вот использование:
myPlugin {
api {
projectId = "111"
token = "222"
}
stringsUploadConfig {
str = ["s1", "s2"] // this works good
uploadEntry {
lang = "en" // here I got error
path = "path-to-file"
}
}
}
Для конфигурации Api все хорошо, но когда я хочу получить доступ uploadEntry{ lang
Я получил ошибку
> Could not set unknown property 'lang' for an object of type mypackage.UploadConfig.
Как я могу получить доступ ко второму вложенному объекту UploadEntry