Purtroppo non posso fare test ma la "delegazione" dovrebbe funzionare come
segue.
package a0DSL
object A0DSL {
import ComponentDSL._
import SAInterfaceDSL._
//dominio
implicit def nameToDescriptionComponent (nm: String) = new
DescriptionHelperComponent (nm)
implicit def componentToProperties(cm: Component) = new
PropertiesHelperComponent (cm)
//dsl
implicit def sainterfaceToProperties(in: SAInterface) = new
PropertiesHelperSAInterface(in)
def sainterface(ds: String) = SAInterfaceDSL.sainterface(ds)
}
A questo punto puoi rimuovere le tue conversioni implicite da *ComponentDSL
*e *SAInterfaceDSL** *ed avere tutto disponibile con un solo
import a0DSL.A0DSL._
In questo caso con un solo import avresti reso visibili solo ed
esclusivamente le operazioni di interesse per il codice client e non tutto
quello che c'e' all'interno della tua libreria.
Non so se il tutto funziona, purtroppo non ho il modello completo e non ho
tempo per riscrivere da zero un modello di test. Lascio a te la verifica e
le eventuali correzioni.
On Sunday, November 4, 2012 5:48:17 PM UTC+1, Emanuele Losanno wrote:
> Ciao Ivano, come sempre grazie mille per la risposta.
> Non mi è chiaro bene il concetto della “delegazione”.
> In poche parole dovrei assegnare nuovi nomi ai metodi e classi che voglio
> importare?
> ...
> *val* C2 = *"C2"* sacomponent "Questa è la descrizione di C2"
> *C2* with_properties List(P1, P2)
> *val* I3 = *"I3"* sainterface "Questa è la descrizione di I3"
> *I3* with_properties Nil
> Il punto ora è questo:
> Nel main io devo importare:
> *import* a0Dominio._
> *import* a0DSL.ComponentDSL._
> *import* a0DSL.SAInterfaceDSL._
> Volendo ridurre le ultime due istruzioni di import in una sola. Come creo
> il mio object contenitore?
> In sostanza a me serve rendere visibile solo i seguenti metodi:
> sacomponent
> saconnector
> with_properties -> di ComponentDSL
> sainterface
> with_properties -> di SAInterfaceDSL