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

Generics,refleksija i sl.

[es] :: .NET :: Generics,refleksija i sl.

[ Pregleda: 2172 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bags

Član broj: 10072
Poruke: 715
*.12.15.tuwien.teleweb.at.



+2 Profil

icon Generics,refleksija i sl.04.05.2008. u 23:16 - pre 193 meseci
Imam metodu public T GetInstance<T>().Preko refleksije za vreme izvodjenja pokupim Type (instanceType) koji trebam instancirati i pozovem metodu ovako:

Code:

getInstance<instanceType>();


i naravno javlja gresku kako nema tog namespace-a.

Gdje gresim?



Free advice is seldom cheap.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Generics,refleksija i sl.05.05.2008. u 08:58 - pre 193 meseci
Generics radi nad tipovima, ne nad instancama. AKo dobro pretpostavljam ti si radio nesto ovako:

Code:

Type instanceType;
isntanceType = reflectionUzmiType(nesto, nesto, ..);
getInstance<instanceType>();

A to ne moze, instanca tipa Type nije tip, ona je deskriptivni objekat koji opisuje tip i sam po sebi je najobicniji objekat i ne moze da se iskoristi kao Generics parametar. Malo deluje zbunjujuce ali iz istog razloga ne mozes da napravis sledeci code

Dictionary<"pera", 123>

vec moras

Dictionary<string, int>


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

bags

Član broj: 10072
Poruke: 715
*.12.15.tuwien.teleweb.at.



+2 Profil

icon Re: Generics,refleksija i sl.05.05.2008. u 09:32 - pre 193 meseci
"Osjetio" sam da je to u pitanju.

Ima li mozda neko zaobilazno resenje osim Refelction.Emit-a ?
Free advice is seldom cheap.
 
Odgovor na temu

_prompt

Član broj: 64725
Poruke: 30
*.adsl-a-1.sezampro.yu.



Profil

icon Re: Generics,refleksija i sl.05.05.2008. u 09:56 - pre 193 meseci
Pogledaj Activator.CreateInstance metod ili kreiraj Assembly objekat
pa iz njega pozovi CreateInstance.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Generics,refleksija i sl.05.05.2008. u 10:04 - pre 193 meseci
Ne treba ti aktivator u ovoj situaciji, sve sto ti treba vec imas.

Emit se koristi za generisanje novih tipova, ne za instanciranje postojecih. Ako hoces da napravis instancu tipa koji je opisan sa instanceType koristis sledeci kod:

Code:

ConstructorInfo constr = instanceType.GetConstructor(Type.EmptyTypes);
object instance = constr.Invoke(null);


ovaj kod instancira objekat koristeci default konstruktor (onaj bez parametara), ako hoces da pozoves konstruktor sa odredjenim potpisom, pogledaj help za GetConstructor() i Invoke() metode.


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 :: Generics,refleksija i sl.

[ Pregleda: 2172 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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