Kotlin: ¿Cómo ejecutar methods de service en el context de una class de transacción?

Me gustaría definir las llamadas a la database en los methods de service, pero las he ejecutado en el context de una class Transaction sin abrir la connection en el service, de modo que pueda include varias llamadas al service en la misma transacción.

Estoy buscando algo como esto, pero no puedo entenderlo.

 class Transaction { init { /** Grab connection **/ } fun doSelect() { ... } } class UserService { fun Transaction.getUser() { return doSelect() } } fun main (args: Array<String>) { Transaction() { UserService().getUser() // INVALID ... } } 

¿Hay alguna forma de hacer esto?

Sé que puedo pasar una instancia de transacción al service así:

 class UserService(tx: Transaction) { fun getUser() { with(tx) { doSelect() } } ... fun main (args: Array<String>) { Transaction() { UserService(this).getUser() ... } } 

… pero estoy esperando un patrón más elegante.