887 messaggi dal 21 marzo 2008
Ciao a tutti
ho definito una classe che dev'essere ereditata da altre.
La classe va a leggere e scrivere dei dati in un db e in base al valore assunto dall'attributo 'Tipo' legge o scrivere determinati dati.

Quello che vorrei fare è definire questo attributo 'Tipo' nella classe derivata, ma il problema è che nella classe 'padre' ci sono anche metodi statici del tipo:

public static List<tipoResource> Elenco(string lingua, string orderby, string asc_desc, int inizio, int fine)
    {
        List<tipoResource> elenco = dbResource.Elenco(Tipo, lingua, orderby, asc_desc, inizio, fine);

        return elenco;
    }


Come posso assegnare un valore a TipoRes dalla classe derivata?
Grazie mille
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


ho definito una classe che dev'essere ereditata da altre.
Quello che vorrei fare è definire questo attributo 'Tipo' nella classe derivata,


Ok, puoi rendere la classe abstract, e così pure la proprietà Tipo. In questo modo, le classi derivate saranno obbligate e fornire un'implementazione per quella proprietà:
public abstract class ClasseBase {
  public abstract string Tipo {get;}
}
public class Derivata : ClasseBase {
  public string Tipo { get { return "MioTipo"; } }
}


Puoi spiegare a cosa ti serve la proprietà Tipo? L'altra discussione che hai aperto riguarda questo stesso problema?
Se ti riferisci al tipo di oggetto, è sufficiente fare oggetto.GetType(), come ti mostravo nell'altra risposta.


ma il problema è che nella classe 'padre' ci sono anche metodi statici del tipo:

I metodi statici non possono sapere da quale istanza li hai invocati, a meno che ovviamente non gli passi l'oggetto come argomento.
E' proprio necessario che siano statici?
Fai molta attenzione anche dbResource è statico e questo vuol dire che vari thread potranno usarlo contemporaneamente. Se l'oggetto non è thread-safe, prima o poi succederanno problemi subdoli e imprevedibili.

ciao,
Moreno

Enjoy learning and just keep making
887 messaggi dal 21 marzo 2008
Ciao Moreno
Tipo è una proprietà della classe.
In pratica ho una classe base che va a leggere e scrivere dei dati nel db e mi creo delle classi derivate che in base al valore di Tipo vanno a leggere o scrivere dati del db

I metodi statici eseguono semplici operazioni di lettura di dati dal db, cancellazione di dati dal db ed esecuzione di query.
Mi consigli ugualmente di evitare l'uso di static?
Sono metodi/funzioni per le quali non è necessario istanziare una classe.
Grazie
Modificato da Gemini78 il 05 ottobre 2016 09.15 -

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.