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

[reseno] dinamichko instanciranje klase

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

[ Pregleda: 921 | Odgovora: 12 ]

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

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]
09.06.2007. u 19:45 

Igor Gajic
Novi Sad

Član broj: 93194
Poruke: 66
80.93.249.*



Profil

icon Re: [pomoc] dinamichko instanciranje klase10.06.2007. u 04:52



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".
10.06.2007. u 04:52 

aleksandarpopov
Software developer
Senta

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

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


Profil

icon Re: [pomoc] dinamichko instanciranje klase10.06.2007. u 09:13
Pogledaj u helpu Activator.CreateInstance a i bila je tema ovde nedavno...
RTFM
10.06.2007. u 09:13 

cucciolo
Belgrado

Član broj: 148142
Poruke: 12
89.216.192.*



Profil

icon Re: [pomoc] dinamichko instanciranje klase10.06.2007. u 20:50
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 ?
10.06.2007. u 20:50 

cucciolo
Belgrado

Član broj: 148142
Poruke: 12
89.216.192.*



Profil

icon Re: [pomoc] dinamichko instanciranje klase11.06.2007. u 11:26
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
11.06.2007. u 11:26 

Radudzoni
Radoslav Jovanovic
Beograd

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



Profil

icon Re: [pomoc] dinamichko instanciranje klase11.06.2007. u 14:09
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...
11.06.2007. u 14:09 

cucciolo
Belgrado

Član broj: 148142
Poruke: 12
89.216.192.*



Profil

icon Re: [pomoc] dinamichko instanciranje klase11.06.2007. u 15:01
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,.,.
11.06.2007. u 15:01 

jablan
Mladen Jablanović
Beograd

Član broj: 8286
Poruke: 2977
194.228.230.*

Sajt: blog.radioni.ca


Profil

icon Re: [pomoc] dinamichko instanciranje klase11.06.2007. u 17:03
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... ;)
11.06.2007. u 17:03 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

Moderator
Član broj: 17944
Poruke: 1572
*.logic.bm.



Profil

icon Re: [reseno] dinamichko instanciranje klase12.06.2007. u 17:20
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.
▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
12.06.2007. u 17:20 

cucciolo
Belgrado

Član broj: 148142
Poruke: 12
89.216.192.*



Profil

icon Re: [reseno] dinamichko instanciranje klase13.06.2007. u 11:07
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 ?


13.06.2007. u 11:07 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

Moderator
Član broj: 17944
Poruke: 1572
*.maxre.bm.



Profil

icon Re: [reseno] dinamichko instanciranje klase13.06.2007. u 13:50
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.


▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
13.06.2007. u 13:50 

cucciolo
Belgrado

Član broj: 148142
Poruke: 12
89.216.192.*



Profil

icon Re: [reseno] dinamichko instanciranje klase13.06.2007. u 14:46
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
13.06.2007. u 14:46 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

Moderator
Član broj: 17944
Poruke: 1572
*.maxre.bm.



Profil

icon Re: [reseno] dinamichko instanciranje klase14.06.2007. u 13:31
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...
▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
14.06.2007. u 13:31 

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

[ Pregleda: 921 | Odgovora: 12 ]

Postavi temu Odgovori

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