2018.10.9

class ResourceID(){
    val image_id: String = "101"
    val text_id: String = "102"
}

class ResourceLoader(id: ResourceID){
    val d: ResourceID = id
    operator fun provideDelegate (thisRef: MyUI, prop: KProperty): ReadOnlyProperty {
        if (checkProperty(thisRef, prop.name)){

        }
    }
    private fun checkProperty(thisRef: MyUI, name: String):Boolean{
        if(name.equals("image")||name.equals("text")){
            return true
        }else{
            throw Exception("Error ${prop.name}")
        }
    }
}

fun bindResource(id: ResourceID): ResourceLoader{
    var res = ResourceLoader(id)
    return res
}

class MyUI{
    val image by bindResource(ResourceID())
    val text by bindResource(ResourceID())
}

class DellImpl(d: ResourceID): ReadOnlyProperty{
    val id: ResourceID = d
    override fun getValue(thisRef: MyUI, property: KProperty):String{
        if(property.name.equals("image"))
            return property.name+" "+id.image_id
        else
            return property.name+" "+id.text_id
    }
}

在这里插入图片描述

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐