+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 5 su 5

Discussione: override routine

  1. #1
    SebastianoFloridia non è in linea Scolaretto
    Post
    115

    override routine

    Ciao Ragazzi, ho una procedura in cui entrano due parametri.
    di uno è sicuro il tipo, del secondo, so che è un dictionary ma il tipo potrebbe cambiare.

    C'è modo per avere la stessa routine, ma allargando alle possibilità di vati tipi?
    Mi interessa che il codice dentro sia unico.

    Spero di essere stato chiaro.



    private void DisegnaTravatura(Travatura TR, Dictionary<string, ArmaturaRET> ListaArmatureRET)

    {

    Saluti
    Sebastiano Floridia

  2. #2
    Dev-01 non è in linea Scolaretto
    Post
    439
    Come utilizzeresti i dati in entrata contenuti nel dictionary?
    Se io passassi un (of string, date) oppure un (of double, decimal) o un Byte dove previsto un Integer o viceversa ad esempio?

    Tieni presente che le soluzioni che debbono "arrangiarsi" coi tipi non sono mai performanti e spesso soggette ad errori che potrebbero rivelarsi difficilmente identificabili all'interno di algoritmi poco manutenibili.

    L'alternativa è quella di definire tanti 'If' quanti sono gli scenari in considerazione tanto da rendere inutile, dispendioso e confuso intraprendere questo tipo di scrittura.

    Dovresti restringere il campo di utilizzo a valori e tipi compatibili e, nel caso, definire procedure ad hoc.

    La soluzione da te proposta potrebbe essere possibile utilizzarla come facade per non esporre i metodi all'esterno della classe ma a monte devi disporre di tutte le implementazioni necessarie tra quelle di possibile reale utilizzo alle quali reindirizzare i tipi e i dati in ingresso.

  3. #3
    Luogo
    Lazio
    Post
    1,596
    Blogs
    21
    Ciao sspintux
    ------------------------------------------------------------

    O Santo Protettore dell'informatico quadratico medio, se puoi allontana da me questo cetriolo amaro!
    Azz! ... questo è un grande porck-around; potremmo addirittura farlo passare per una funzionalità avanzata

  4. #4
    SebastianoFloridia non è in linea Scolaretto
    Post
    115
    Grazie ragazzi, mi metto a studiare.
    Saluti
    Sebastiano Floridia

  5. #5
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,133
    Quote Originariamente inviato da SebastianoFloridia Visualizza il messaggio
    ho una procedura in cui entrano due parametri.
    di uno è sicuro il tipo, del secondo, so che è un dictionary ma il tipo potrebbe cambiare.
    C'è modo per avere la stessa routine, ma allargando alle possibilità di vati tipi?
    Mi interessa che il codice dentro sia unico.
    Dipende da quanto cambiano i tipi di cui parli. Come ti è stato detto, è chiaro se una versione del metodo accetta una stringa e un'altra deve accettare un DateTime, difficile usare lo stesso codice essendo che i due tipi vanno per forza trattati in modo diverso.

    Però mi viene da pensare che, se l'implementazione deve essere simile, ci sia qualche "relazione" o "somiglianza" tra i tipi - seppur diversi - di dati che passi come parametro: magari potresti risolvere applicando la OOP e facendo in modo che i due tipi ereditino da una stessa classe base, che magari restituisce la stessa gamma di informazioni (per quantità e tipo) ma estraendole da una base di partenza differente (ossia un oggetto che appartiene alla classe discendente).

    L'alternativa già suggerita è quella di avere un algoritmo talmente generico da prescindere dal tipo, che può essere specificato come Generic, per cui ti hanno già fornito link di approfondimento.

    In breve, la risposta corretta alla tua domanda dipende dalla finalità del tuo metodo e dalla diversità tra i due tipi che devi passare.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi