banjalukaforum.com

Dobrodošli na banjalukaforum.com
Danas je 07 Avg 2025, 17:52

Sva vremena su u UTC [ DST ]




Započni novu temu Odgovori na temu  [ 16 Posta ] 
Autoru Poruka
 Tema posta:
PostPoslato: 04 Sep 2007, 07:13 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 08 Nov 2004, 08:54
Postovi: 211
Na konkursu lijepo pise mogucnost zaposlenja.Slucajno znam i ko je pobedio na konkursu i zaposlen je u berzi.
Izrada takve komponente definitivno zahteva minimum 15 sati rada da sve bude perfektno i detaljno iskomentarisano,iztestirano u bilo kom programskom jeziku ukljucujuci i Javu.
PS.Da li Java ima reflection?

_________________
logic_rabbit (MCAD,MCSD,MCTS,MCPD,MCT)
http://blog.developers.ba


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 04 Sep 2007, 08:34 
OffLine
Majstorski kandidat
Majstorski kandidat
Korisnikov avatar

Pridružio se: 12 Jul 2001, 01:00
Postovi: 457
Lokacija: Banjaluka
"Slucajno znam i ko je pobedio na konkursu i zaposlen je u berzi. "
Kako to mislis ... pa konkurs jos traje ... pise do 30 septembra :) ?!
Java ima "reflection" ali se ne moze kao u .NET-u ucitati assembly i izvrsiti metod iz neke klase.

_________________
Ivan M.


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 04 Sep 2007, 09:29 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 08 Nov 2004, 08:54
Postovi: 211
Reflection u Javi je losiji tako mi neko rece,ako uopste i postoji.
Pa nemam pojma da li je zavrsen ili ne,cuo sam da su nekoga primili,to
neznaci da nece primiti jos nekoga...

_________________
logic_rabbit (MCAD,MCSD,MCTS,MCPD,MCT)
http://blog.developers.ba


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 13 Sep 2007, 12:03 
OffLine
Urednik
Urednik

Pridružio se: 26 Jun 2003, 21:50
Postovi: 2669
Joj pitanja pa naravno da ima refleksiju, samo njena upotreba se ne preporucuje (tj. osim ako mora). Vertygo, mislim da je moguce ucitati .class fajl naknadno pomocu ClassLoadera - ako si na to mislio.

Refleksija je u fazonu:

nesto.getClass().getMethod("ime", ...(tipovi argumenata)).invoke(argumenti)

Tako nesto :)


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 13 Sep 2007, 14:56 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 08 Nov 2004, 08:54
Postovi: 211
Ucitati class file naknadno je u c# puno teze ali ne i nemoguce.

_________________
logic_rabbit (MCAD,MCSD,MCTS,MCPD,MCT)
http://blog.developers.ba


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 13 Sep 2007, 23:40 
OffLine
Majstorski kandidat
Majstorski kandidat
Korisnikov avatar

Pridružio se: 12 Jul 2001, 01:00
Postovi: 457
Lokacija: Banjaluka
Malkice OT ali dobro ...
che.guevara zar ClassLoader ne ucitava metadata podatke assemblya ( klase/metode/attribute-propertye, barem ClassLoader to radi u .netu) ?
Ugl u .NET-u CLR Loader ucitava assembly (dll, exe ...) u Application Domain (prostor u kome se izvrsava nasa aplikacija), a ClassLoader ocitava meta podatke assembly-a (klase, metode, property-e).

Rabbit po cemu je tesko :) ?
dve linije koda i ...

Kod:
            Assembly asm = Assembly.LoadFile("C:\\fajl.dll");
            asm.GetType("klasa").GetMethod("metoda").Invoke(new object(), null);

_________________
Ivan M.


Poslednji put menjao Vertygo dana 14 Sep 2007, 00:26, izmenjena 2 puta

Vrh
 Profil  
 
 Tema posta:
PostPoslato: 13 Sep 2007, 23:55 
OffLine
Veteran
Veteran

Pridružio se: 01 Jul 2004, 11:47
Postovi: 2624
@che: Mogao bi splitovati temu na temu o konkursu i temu o tim klasama.

_________________
Sve sto sam napisao, slucajno je namjerno ...


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 13 Sep 2007, 23:59 
OffLine
Majstorski kandidat
Majstorski kandidat
Korisnikov avatar

Pridružio se: 12 Jul 2001, 01:00
Postovi: 457
Lokacija: Banjaluka
Hvala Digresija na ideji ... pospan sam vidis nisam se ni setio toga ... tema splitovana :) thx

_________________
Ivan M.


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 14 Sep 2007, 23:24 
OffLine
Urednik
Urednik

Pridružio se: 26 Jun 2003, 21:50
Postovi: 2669
Hvala kolezi Vertigu :)

Naravno da Java sve to moze i da moze i C#, inace bi C# bio "sa konja na magarca". Koga interesuje Java, izguglao sam ovaj pdf:

http://www.panix.com/~mito/articles/art ... er-ltr.pdf

Zanimljiva skripta o ClassLoaderima (kako se prave).


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 15 Sep 2007, 08:32 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 08 Nov 2004, 08:54
Postovi: 211
Nismo se razumeli.Ja sam mislio na nesto ovako.
Metod pozvati nije problem.

Assembly asm = Assembly.LoadFile(@"C:\REGIJE.dll");
Type r = asm.GetType("REGIJE");
List<r> lista = new List<r>();
ovde se dobija greska....

Mozda ti Vertigo znas neki nacin da se ovo izvede?
Ja znam jedan...

_________________
logic_rabbit (MCAD,MCSD,MCTS,MCPD,MCT)
http://blog.developers.ba


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 15 Sep 2007, 16:23 
OffLine
Majstorski kandidat
Majstorski kandidat
Korisnikov avatar

Pridružio se: 12 Jul 2001, 01:00
Postovi: 457
Lokacija: Banjaluka
Evo kako mozes dodati vrednosti generickoj listi preko Reflectiona a da ne koristis MSIL ...

Kod:
        private void button1_Click(object sender, EventArgs e)
        {
            //Ucitavanje DLL-a sa diska u AppDomain
            Assembly asm = Assembly.LoadFile(@"C:\MojDll.dll");

            //Ucitavanje klase
            Type myType = asm.GetType(Path.GetFileNameWithoutExtension(asm.ManifestModule.ScopeName) +".Class1");

            //Instanciranje klase preko staticke metode CreateInstance
            object vrednost1 = Activator.CreateInstance(myType);
            object vrednost2 = Activator.CreateInstance(myType);
            object vrednost3 = Activator.CreateInstance(myType);

            //Dodavanje vrednosti polja
            vrednost1.GetType().GetProperty("Polje").SetValue(vrednost1, 1, null);
            vrednost2.GetType().GetProperty("Polje").SetValue(vrednost2, 2, null);
            vrednost3.GetType().GetProperty("Polje").SetValue(vrednost3, 3, null);

            //Kreiranje Liste za nasu klasu
            Type listType = typeof(List<>);
            Type listClass = listType.MakeGenericType(myType);
            object obj = Activator.CreateInstance(listClass);
           
            //MethodInfo[] methods = myObject.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Public);
           
            //Dodavanje vrednosti generickoj listi
            DodajVrednosti(ref obj, vrednost1, vrednost2, vrednost3);


        }

        /// <summary>
        /// Dodavanje vrednosti generickoj listi
        /// </summary>
        /// <param name="obj">List<T> objekat</param>
        /// <param name="vrednosti">Instance klase</param>
        private void DodajVrednosti(ref object obj, params object[] vrednosti)
        {
            for(int i=0;i<vrednosti.Length;i++)
            {
                obj.GetType().InvokeMember("Add",          
                    BindingFlags.InvokeMethod |
                 BindingFlags.Public |
                 BindingFlags.Instance,
                    null,
                    obj,
                    new object[] { vrednosti[i] } );
            }
        }


Kod:
    public class Class1
    {
        private int polje;

        public int Polje
        {
            get{return this.polje;}
            set {this.polje = value;}
        }
    }

_________________
Ivan M.


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 15 Sep 2007, 20:32 
OffLine
Urednik
Urednik

Pridružio se: 26 Jun 2003, 21:50
Postovi: 2669
Refleksija sluzi za to "pozivanje metoda" a ucitavanje iz ".dll" odnosno iz ".class" ili ".jar" je nesto drugo. ClassLoader obavlja tu funkciju u Javi. Mozda ovaj pdf sto sam ga prilozio nije dovoljno jasan?


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 15 Sep 2007, 22:53 
OffLine
Majstorski kandidat
Majstorski kandidat
Korisnikov avatar

Pridružio se: 12 Jul 2001, 01:00
Postovi: 457
Lokacija: Banjaluka
Ja sam vec rekao da CLR Loader ucitava DLL u Application Domain ... to je sto se tice .NET-a :) ... sto se tice jave vjerujem ti da Class Loader obavlja istu funkciju za Javu :) ...
Sto se tice refleksije ona sluzi znaci za otkrivanje informacija (metadata) klase, propertya, metoda, za njihovo izvrsavanje itd itd ... I to za vreme izvrsavanja programa (runtime)
Gore je samo primer kako da se kroz refleksiju kreira i popuni genericka lista.

PS po 100 puta editujem post :)

_________________
Ivan M.


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 16 Sep 2007, 14:38 
OffLine
Urednik
Urednik

Pridružio se: 26 Jun 2003, 21:50
Postovi: 2669
Dakle, Rabbit, Reflection i Class Loading nisu komplikovani ni u Javi ni u .NET-u :)

Vertygo, jebiga, nikako objasniti covjeku :)

Java rulz
NET sux
die bitchiezz:)


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 17 Sep 2007, 07:25 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 08 Nov 2004, 08:54
Postovi: 211
Bravo Vertigo.
Mi nesto pokusavamo sa reflection.emit.
Ovoliko refleksije u kodu bi bio udar na preformanse mozda? :D

_________________
logic_rabbit (MCAD,MCSD,MCTS,MCPD,MCT)
http://blog.developers.ba


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 21 Sep 2007, 15:52 
OffLine
Majstorski kandidat
Majstorski kandidat
Korisnikov avatar

Pridružio se: 12 Jul 2001, 01:00
Postovi: 457
Lokacija: Banjaluka
Rabbit: pa ne znam tacno koliko bi uticalo na performanse ... sve zavisi sta se tacno radi ... trebalo bi napraviti benchmark ... ali to je na tebi/vama da uradite :) ... u krajnjoj liniji na malu kolicinu podataka razlika je neosetna 100% ...

_________________
Ivan M.


Vrh
 Profil  
 
Prikaži postove u poslednjih:  Poređaj po  
Započni novu temu Odgovori na temu  [ 16 Posta ] 

Sva vremena su u UTC [ DST ]


Ko je OnLine

Korisnici koji su trenutno na forumu: Nema registrovanih korisnika i 7 gostiju


Ne možete postavljati nove teme u ovom forumu
Ne možete odgovarati na teme u ovom forumu
Ne možete monjati vaše postove u ovom forumu
Ne možete brisati vaše postove u ovom forumu
Ne možete slati prikačene fajlove u ovom forumu

Pronađi:
Idi na:  
Powered by phpBB® Forum Software © phpBB Group
Hosting BitLab
Prevod - www.CyberCom.rs