如何在Kotlin中创建动态/透明代理?

如何在Kotlin中创建动态/透明代理?,kotlin,Kotlin,在C#中,我们可以使用DynamicObject类进行动态方法调用,例如用于JsonRPC之类的调用。在Python中,使用getattr和call执行相同的任务。一般来说,我需要一个没有实际方法的对象,它可以像包含方法一样使用。方法名和参数进入函数并执行任务。使用IoC我们可以通过拦截来实现,但我需要知道是否有其他方法(如C#中的动态)不使用接口和IoC 例如,Zabbix API有许多JSON-RPC方法,如host.create trigger.get。。。 有一个Python包装器可以帮

在C#中,我们可以使用DynamicObject类进行动态方法调用,例如用于JsonRPC之类的调用。在Python中,使用getattrcall执行相同的任务。一般来说,我需要一个没有实际方法的对象,它可以像包含方法一样使用。方法名和参数进入函数并执行任务。使用IoC我们可以通过拦截来实现,但我需要知道是否有其他方法(如C#中的动态)不使用接口和IoC

例如,Zabbix API有许多JSON-RPC方法,如host.create trigger.get。。。 有一个Python包装器可以帮助您调用它们,因此:

from zabbix_api import ZabbixAPI
zapi = ZabbixAPI(server="https://server/")
zapi.login("login", "password")
zapi.trigger.get({"expandExpression": "extend", "triggerids": range(0, 100)})

实际上,在ZabbixAPI类中没有像“login”和“trigger”这样的属性

不是特定于Kotlin的,但这里有一个Java等价物:@holi Java如果你的意思是“你的问题是什么?”,答案是Kotlin dynamic不支持JVM目标@格雷戈普夫不,这不是我需要的!我可以很容易地使用IoC编写相同的代码!我不想定义接口!这就是所谓的“动态”;意思是@Kamyar你能更新你想要的描述(可能是伪代码)吗?据我所知,C#Dynamic对象的想法是创建没有类型的对象,其成员和方法可以以完全动态的方式设置/调用,例如,在JavaScript中。这在Java或Kotlin中是不存在的,它们是类型安全语言。如果没有此对象的类型来定义该对象可用的属性和方法,则不能对对象调用方法或设置属性。如果这就是您在JVM上寻找的,那么看看groovy之类的语言。