[ darmar_pr @ 31.05.2010. 10:57 ] @
Da opišem problem:

Data mi je tabela kojoj korisnik može dodavati svoja polja(iz aplikacije). Dakle tabela ima fiksna polja npr: F1, F2,F3 i F4. Na osnovu toga formiram klasu koju koristim u programu sledećeg interfejsa:

interface ITable1
{
int F1{get; set;}
string F2{get; set;}
bool F3{get; set;}
string F4{get; set;}
bool Save();
void Read();
}

Sada korisnik (iz aplikacije) doda novo polje string F5 u Sql tabelu. Trebalo bi izmeniti interface ITable1 i implementaciju tog interfejsa kroz klasu tako da sada bude:

interface ITable1
{
int F1{get; set;}
string F2{get; set;}
bool F3{get; set;}
string F4{get; set;}
bool Save();
void Read();
string F5{get; set;}
}

Takođe treba izmeniti i klasu koja implementira interfejs. Znači , interesujeme, da li je moguće dinamički menjati korisničku klasu kao što je moguće , recimo, dinamički dodavati kontrole na formu. Neki link, uputstvo šta da tražim. Možda refleksija?

Hvala unapred.



[ ravni @ 31.05.2010. 21:06 ] @
ne moze to u c#
za to bi ti trebao neki dinamicki jezik (mada c#4 ima neke slicne mogucnosti, npr: dynamic promenljive i ExpandoObject)

zasto ne bi imao neki dictionary za custom polja pa za kljuc uzmes ime polja ("F5"), a za value vrednost tog polja u bazi?
[ Radovan__III @ 31.05.2010. 21:36 ] @
najverovatnije da nisi na pravi nacin pristupio problemu, nego hoces preko kolena da resis nesto time sto zelis da prosiris klasu. Da mozda nisi na pravi nacin definisao bazu ?
[ darmar_pr @ 31.05.2010. 22:36 ] @
Citat:
Radovan__III: najverovatnije da nisi na pravi nacin pristupio problemu, nego hoces preko kolena da resis nesto time sto zelis da prosiris klasu. Da mozda nisi na pravi nacin definisao bazu ?




Izgleda da nisam najbolje objasnio problem.
Pr: tabela KLIJENTI ima neka fiksna polja:
1. ID
2. NAZIV
3. ADRESA
4. GRAD

To su polja koja sam ja definisao. Sada dođe korisnik koji želi da uz ova četiri polja doda još neko polje (recimo PIB). Iz programa mu treba biti omogućeno da sam doda to polje u tabelu(to nije bogzna koliko komplikovan kod), zatim da na formi koja radi sa zapisima iz tabele KLIJENTI pored ova 4 postojeća polja bude dinamički kreirano i polje PIB(i to sam uradio, this.Controls.Add(myControl), definisao properties, evente, sve dinamički), dalje da korisnik sam određuje polja koja ulaze u razne dokumente(prijemnice, otpremnice...) itd..Trebalo bi da program bude što je moguće više prilagodljiv različitim korisnicma.

Čisto me interesuje, doslednosti radi , da li je moguće dinamički proširiti klasu kako sam naveo u prvom postu. U stvari, imam rešenje za taj problem ali mi deluje skarabudzeno.Recimo upis novog klijenta u tabelu vršim delom koristeći CKlient.Write() , iz klase, ali nova polja moram naknadno da dodajem sa više INSERT-VALUE klauzula u bazu.. Dakle, to radi ali nije lepo za oko. Verovatno, da se to i ne može realizovati kako sam zamislio.

[ Radovan__III @ 31.05.2010. 22:50 ] @
Evo na brzinu

tabela1:
id , naziv , adresa , grad



tabela2:
id , kolona , vrednost


I cao djaci, ako hoces totalno dinamicnu varijantu. Ni ovo nije najsrecnija varijanta ali ako hoces dinamicno tako ti je
polje kolona se odnosi na bilo koju kolonu koju korisnik zeli

Dinamicko menjanje tabela u bazi ti odmah utice i na domenske objekete i na mnogo mnogo drugih stvari sto ako pravis iole veci program ( vise tabela u bazi ) imaces velike probleme