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

在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类中没有像“登录”和“触发器”的属性!