PDA

View Full Version : [C# 2.0]Stesso form per oggetti simili


RaouL_BennetH
09-11-2009, 17:04
Ciao a tutti :)

Mi trovo a rappresentare alcune tabelle che, seppur contenendo e rappresentando dati diversi, sono strutturate nello stesso identico modo, per es.:


TblCategoriaDocumenti

id - descrizione

TblCategoriaDipendente

id - descrizione

TblProvince

id - descrizione


Sto avendo la malsana idea di fare qualcosa del genere:



public class BaseClass
{
private int id;
private string descrizione;

//i vari getter e setter (irlandesi o no è uguale....)
}

public class SpecializedClass : BaseClass
{

private const string formTile = "CATEGORIA DOCUMENTI";
//altri elementi descrittivi del genere...
}


Tutto questo per avere un unico Form Base al quale passare poi uno degli oggetti.

Come idea può andare oppure è come il lupo che perde il pelo e poi fa schifo ?

Grazie mille :)

RaouL.

U235
10-11-2009, 16:10
non mi è molto chiaro il tuo scopo, ma da quello che ho capito conviene utilizzare un interfaccia, esempio :


public interface MiaInterfaccia
{
string[] NomeCampo { get; }
int[] ID { get; }
string[] Descrizione { get; set; }
}

public class TblCategoriaDipendente : DataSet1.TblCategoriaDipendenteDataTable, MiaInterfaccia
{
private string[] nomeCampo;
private int[] iD;
private string[] descrizione;

public TblCategoriaDipendente()
{
//codice che associa i vari record valorizzando le proprietà
}

#region MiaInterfaccia Membri di

public string[] NomeCampo
{
get { return this.nomeCampo; }
}

public int[] ID
{
get { return this.iD; }
}

public string[] Descrizione
{
get
{
return this.descrizione;
}
set
{
this.descrizione = value;
}
}

#endregion
}

struct CampoINI
{
public int ID;
public string Descrizione;
public string NomeCampo;
}

public class TblProvince : List<CampoINI>, MiaInterfaccia
{

#region MiaInterfaccia Membri di

public string[] NomeCampo
{
get
{
string[] result;
//Codice che estra da tutti i CampoINI il nome;
return result;
}
}

public int[] ID
{
get
{
int[] result;
//Codice che estra da tutti i CampoINI ID;
return result;
}
}

public string[] Descrizione
{
get
{
string[] result;
//Codice che estra da tutti i CampoINI il nome;
return result;
}
set
{
//codice che imposta le descrizioni su tutti i campoINI
}
}

#endregion
}
}




e le usi cosi ad esempio :


TblCategoriaDipendente datatable = new TblCategoriaDipendente();
//....
TblProvince tblProv = new TblProvince();
//....
List<MiaInterfaccia> list = new List<MiaInterfaccia>();
list.Add(tblProv);
list.Add(datatable);
foreach (MiaInterfaccia mi in list)
{
string[] nomi = mi.NomeCampo;
///ecc...
}


sull'efficacia è discutibile ma non necessariamente sbagliata. ma dipende dal motivo.