Ciao a tutti. Avrei un quesito da porvi relativo ad una possibile e migliore implementazione di un metodo statico di una classe altrettanto statica.

Vediamo un po' di codice.

Questa è la classe statica
public class Utility {

//Costruttore
static Utility {}

//metodo da richiamato in vari punti del progetto (pagine, usercontrol, ecc.)
public static int MetodoStatico(DateTime a, DateTime b)
  [...]

  //Richiamo una classe esterna
  IMiaClasse cb = new  MiaClasse("parametro");
  return c.Metodo(x, y);
}


Come si può vedere, in questo metodo viene istanziata una classe non statica e ne viene utilizzato un suo metodo.
Il problema è che tra l'altro il costruttore di MIaClasse necessita di un parametro. Potrei tranquillamente passarlo al metodo statico per poi utilizzarlo nel costruttore, ma credo che si possa fare molto meglio:

public static int MetodoStatico(DateTime a, DateTime b, string mioParametro)
  [...]

  //Richiamo una classe esterna
  IMiaClasse cb = new  MiaClasse(mioParametro);
  return c.Metodo(x, y);
}


Per com'è adesso la classe statica, non riesco ad instanziare MiaClasse nel costruttore di Utility.

Suggerimenti?
Secondo me dipende tutto da MiaClasse, nel senso: se MiaClasse necessita di parametro e va istanziata, vuol dire che con essa puoi fare più cose in funzione del parametro. Perciò o non fai affatto il metodo statico e fai usare direttamente MiaClasse, oppure ti fai passare parametro per velocizzare un'operazione che fai spesso.
Se parametro può essere previsto a priori, usa degli overload, oppure fai che la classe statica espone istanze già pronte di MiaClasse con alcuni parametri preconfezionati.

Ciao

Il mio blog
Homepage
Ciao e grazie del tuo contributo.
Alla fine, per accelerare la cosa, ho deciso di utilizzare semplicemente un parametro.
L'ultima soluzione suggerita, quella di esporre istanze già pronte di MiaClasse l'avevo già pensata, ma l'ho scartata perchè il costruttore di MiaClasse dovrebbe provvedere a settare delle connectionstring e non vorrei mai che avesse un valore predefinito ad un determinato db.
Probabilmente, se proprio voglio far sparire il parametro, potrei pensare a rendere la classe Utility non statica.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.