Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[reseno] dinamichko instanciranje klase

[es] :: .NET :: [reseno] dinamichko instanciranje klase

[ Pregleda: 4585 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

cucciolo
Belgrado

Član broj: 148142
Poruke: 12
89.216.192.*



Profil

icon [reseno] dinamichko instanciranje klase09.06.2007. u 19:45 - pre 204 meseci
Hocu da napravim dinamichko instanciranje klase.,. naime ukoliko mi se prosledi samo string koji sadrzi naziv klase, da li mogu na osnovu tog stringa da instanciram objekat, znachi da kazem nekako ovako :
Code:

//Student je ujedno i neka definisana klasa
string klasa="Student";

klasa objekat=new klasa();

//znam da ovo nije nikako  dobro napisano, ali samo da objasnim shta hocu ili ako onda klasa postane
string klasa="Radnik";
klasa objekat=new klasa();
// i da mi napravi objekat od  klase radnik



valjda sam jasan

pozz

[Ovu poruku je menjao cucciolo dana 12.06.2007. u 17:08 GMT+1]
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
80.93.249.*



+987 Profil

icon Re: [pomoc] dinamichko instanciranje klase10.06.2007. u 04:52 - pre 204 meseci



Otprilike to se radi preko jedne klase koja se naziva "class factory".

Ta klasa bi trebalo da ima metod:

object CreateClass(string ime_klase)

koja preuzima naziv klase, zatim u f-ji definises jedan switch koji ce na osnovu
prosledjenog imena da generise trazenu klasu.

Otprilike:

if(ime_klase=="student") return new Student();
if(ime_klase=="radnik") return new Radnik();


Nadam se da sam bio dovoljno jasan.

P.S. Proguglaj na internetu o "class factory".
 
Odgovor na temu

aleksandarpopov
IT consultant
Senta

Član broj: 57172
Poruke: 484
*.sksyu.net.

Sajt: www.linkedin.com/in/aleks..


Profil

icon Re: [pomoc] dinamichko instanciranje klase10.06.2007. u 09:13 - pre 204 meseci
Pogledaj u helpu Activator.CreateInstance a i bila je tema ovde nedavno...
RTFM
 
Odgovor na temu

cucciolo
Belgrado

Član broj: 148142
Poruke: 12
89.216.192.*



Profil

icon Re: [pomoc] dinamichko instanciranje klase10.06.2007. u 20:50 - pre 204 meseci
ako sam dobro shvatio trebao bih da napishem neshto ovako

Code:

object o=Activator.CreateInstance(Type.GetType("Student"));
o.NekaMetoda();


samo shto mi on to ne istancira najbolje, pregledao sam i prethodne teme nije mi bash taj deo povezivanja sa navedenom instancom najasniji,., da je povezem preko object ,,. ili drugachije ?
 
Odgovor na temu

cucciolo
Belgrado

Član broj: 148142
Poruke: 12
89.216.192.*



Profil

icon Re: [pomoc] dinamichko instanciranje klase11.06.2007. u 11:26 - pre 204 meseci
ok radi sve,. mada mi prvo prijavljuje da object "o" nema neku metodu koju pozivam jer je ne vidi, logichno, jer ce tek u runTime-u postati konkretni objekat neke klase,.,

hvala puno
 
Odgovor na temu

Radudzoni
Radoslav Jovanovic
Beograd

Član broj: 8384
Poruke: 133
*.fiberop.matgnet.com.



Profil

icon Re: [pomoc] dinamichko instanciranje klase11.06.2007. u 14:09 - pre 204 meseci
He he...
Citat:
samo shto mi on to ne istancira najbolje

Kako to instancira "nenajbolje"? (mozda prostoji neki parametar da mu prosledis InstancirajNajbolje = true/false ;-)

uzgred moraces to da kastujes u odgovarajuci tip da bi mogao da pozoves metodu te klase...
 
Odgovor na temu

cucciolo
Belgrado

Član broj: 148142
Poruke: 12
89.216.192.*



Profil

icon Re: [pomoc] dinamichko instanciranje klase11.06.2007. u 15:01 - pre 204 meseci
xaxxaax,. da e za metode sam napravio sledece i radi lepo

Code:

public object napravi(ref object obj,string nazivKlase)
{
    obj=Activator.CreateInstance(Type.GetType(nazivKlase));
    return obj;
}

public object izvrshiMetodu(object obj, string nazivMetode, object[] parametri)
{
    Type tipObjekta=obj.GetType();
    object result=tipObjekta.InvokeMember(nazivMetode,BindingFlags.InvokeMethod,null,obj,parametri);
    return result;
}


tako da preko prve funkcije inicijalizujem objekat, a preko druge pozovem metodu,.,.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: [pomoc] dinamichko instanciranje klase11.06.2007. u 17:03 - pre 204 meseci
Samo pripazi da ne preteraš sa refleksijom (stvari koje možeš da rešiš bez, reši bez). Znaš onu poslovicu: kad imaš čekić onda ti sve liči na ekser... ;)
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: [reseno] dinamichko instanciranje klase12.06.2007. u 17:20 - pre 204 meseci
Slazem se sa jablanom, mozda ti to resenje i nije najbolje jer je refleksija uglavnom podlozna posebnim security permissions dozvolama i lako mozes da utrcis u situaciju da ti refleksija bude iskljucena (neki ISPovi npr ne dozvoljavaju refleksiju u asp.net aplikacijama).
Ako imas konacan broja klasa o kojima pitas onda poslusaj Igora i implementiraj "class factory" pattern. U kombinaciji sa polimorfizmom ovaj pristup je dovoljno mocan da ti resi vecinu projektnih zahteva ako ne sve.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

cucciolo
Belgrado

Član broj: 148142
Poruke: 12
89.216.192.*



Profil

icon Re: [reseno] dinamichko instanciranje klase13.06.2007. u 11:07 - pre 204 meseci
da da gledao sam i class factory pattern i naravno razlichite nachine implementacije istog,. ali mozda je refleksija bolje reshenje ako radim sa remotingom i ne znam shat me ochekuje na drugoj strani, mislim na klase,.,. ,.

ali svakako sam pogledao i jedno i drugo.. hvala puno za savete


a zashto onemogucavaju refleksiju ISP-ovi ?,. security ?


 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: [reseno] dinamichko instanciranje klase13.06.2007. u 13:50 - pre 204 meseci
Citat:
cucciolo: da da gledao sam i class factory pattern i naravno razlichite nachine implementacije istog,. ali mozda je refleksija bolje reshenje ako radim sa remotingom i ne znam shat me ochekuje na drugoj strani, mislim na klase
a zashto onemogucavaju refleksiju ISP-ovi ?,. security ?


Vise zastita drugih korisnika shared servera, refleksija ti omogucava dinamicko bindovanje na assemblije van sopstvenog manifesta i otkrivanje private detalja tipova u njima, spika je da to teorijski omogucava otkrivanje poslovnih tajni konkurenciji. Iskreno ja ne kupujem tu ideju, ako mozes da se bindujes na asembli mozes onda i da ga downloadujes preko svog sajt i da ga onda seciras na miru kuci Al razum slabo ima veze sa danasnjim informacionim sistemima.

Al moram priznati da si me zbunio sad, sta ce ti refleksija (ili class factory pattern) za remoting, remoting je sam vec baziran na refleksiji i sam instancira tipove koji se "setaju". I definitivno obe strane moraju da imaju deklarisane tipove koji se setaju, ne mozes poslati anonymous tip ako druga strana ne zna kako da ga deserijalizuje, a ako zna da deserijalizuje onda je instanca vec kreirana.


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

cucciolo
Belgrado

Član broj: 148142
Poruke: 12
89.216.192.*



Profil

icon Re: [reseno] dinamichko instanciranje klase13.06.2007. u 14:46 - pre 204 meseci
Citat:

Al moram priznati da si me zbunio sad, sta ce ti refleksija (ili class factory pattern) za remoting, remoting je sam vec baziran na refleksiji i sam instancira tipove koji se "setaju". I definitivno obe strane moraju da imaju deklarisane tipove koji se setaju, ne mozes poslati anonymous tip ako druga strana ne zna kako da ga deserijalizuje, a ako zna da deserijalizuje onda je instanca vec kreirana.


,.exex to je moje ne znanje,. nemoj se zbunjivati, nisam radio sa Remotingom unutar .NET-a, radio sam sa PHP-ASom (AMFPHP) , lichno sam mislio da je moguce povezovanje i mapiranje klasa, koje dobijesh u run-timeu u C# , nisam stigao josh da chitam o tome poshto sam neke druge stvari radio.,,. ali super,. sada znam da moram da navedem klase koje su u opticaju

hvala puno za objashnjenje
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: [reseno] dinamichko instanciranje klase14.06.2007. u 13:31 - pre 204 meseci
Pazi ti mozes da deklarises parametar metoda kao object i da dinamicki "otkrivas" elemente tipa objekta koji ti se prosledi, ali ne vidim kako bi to mogao da iskoristis van application domain-a u kojem si, tj kroz raznorazne remoting sisteme jer da bi objekat postojao mora da se instancira unutar application domaina. Mozda ako bi tacno objasnio sta zelis da napravis mogli bi da ti damo neke savete...
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: .NET :: [reseno] dinamichko instanciranje klase

[ Pregleda: 4585 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.