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

InvalidCast pri Debug-u

[es] :: .NET :: InvalidCast pri Debug-u

[ Pregleda: 1637 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vujkev
Beograd

Član broj: 8072
Poruke: 1347
*.telekom.yu.



+104 Profil

icon InvalidCast pri Debug-u17.01.2008. u 12:36 - pre 198 meseci
Prilikom pokretanja programa u "Debug" konfiguraciji dobijam grešku {System.InvalidCastException}. Možda to i ne zvuči toliko čudno, ali ako konfiguraciju promenim u "Release" sve radi kako treba. Još jedna čudna stvar je ta da je pre mesec dana isti kod radio u obe konfiguracije.

Probao sam da uradim Clean Solution, brisao ceo folder gde se nalazi debug konfiguracija, gasio VS i ostao bez ideje kako (i u čemu) je problem

Problematični kod je

Code:

        For Each File As IO.FileInfo In New IO.DirectoryInfo(sFolder).GetFiles("*.dll", IO.SearchOption.AllDirectories)
            Dim Asm As Reflection.Assembly
            Dim cParser As IParser
            Try
                Asm = Reflection.Assembly.LoadFrom(File.FullName)
                For Each t As Type In Asm.GetTypes
                    If Not t.GetInterface("IParser") Is Nothing Then
                        cParser = DirectCast(Asm.CreateInstance(t.Namespace & "." & t.Name), IParser)   ' <---- greška je naravno ovde
                        ...
                        ...
                        ...
                    End If
                Next
            Catch ex As Exception
                debug.print ex.message
            End Try
        Next



Da li neko ima rešenje?
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: InvalidCast pri Debug-u17.01.2008. u 13:24 - pre 198 meseci
Hmm, izgleda weird, jedino sto mi mozda pada na pamet je da u releasu ucitava i neki drugi DLL koji ima klasu sa IParser interfejsom iz drugog namespace-a pa prodje if a pukne cast. Probaj da u GetInterface testiranju iskoristi full name IParser interfejsa...

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

vujkev
Beograd

Član broj: 8072
Poruke: 1347
*.telekom.yu.



+104 Profil

icon Re: InvalidCast pri Debug-u17.01.2008. u 13:54 - pre 198 meseci
Probao

Code:

If Not t.GetInterface("SuVu.Tabulator.Common.IParser") Is Nothing Then
    cParser = DirectCast(Asm.CreateInstance(t.Namespace & "." & t.Name), SuVu.Tabulator.Common.IParser)


i ne radi
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: InvalidCast pri Debug-u17.01.2008. u 16:31 - pre 198 meseci
OK, ajmo onda na dijagnostiku, ubaci jos jedan try/catch unutar ForEach(t) i kad ti pukne vidi za koju klasu ti je pukao pa onda pogledaj koja je to klasa i dal ta klasa podrzava IParser i ako ne kako je uspela da prodje kroz if uslov

Sad se nesto setih jos, gde ti je deklarisan SuVu.Tabulator.Common.IParser? Da nije naleteo na njega i pokusava da instancira interfejs (sto ne moze)?


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

vujkev
Beograd

Član broj: 8072
Poruke: 1347
212.200.243.*



+104 Profil

icon Re: InvalidCast pri Debug-u18.01.2008. u 00:09 - pre 198 meseci
Probao još jedan try catch - ista greška
Proverio iz kog fajla pokušava da napravi instancu - nije onaj gde je definisan interface. Nisam napomenuo da petlja treba da napravi instance iz četiri različita fajla i da na svim fajlovima pravi grešku

i onda ....

kopirao projekat sa externog HDD-a (sa kog sam ga direktno startovao) na lokalni disk i verovali ili ne sve radi kako treba :( Koje su šanse da to može da bude greška (predpostavljam velike) i kako može da se ispravi??????

Ako se dobro sećam ranije sam projekat startovao direktno sa USB-a i nisam imao ovih problema. Probaći sutra opet sa USB-a pa ću javiti rezultat.



Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: InvalidCast pri Debug-u18.01.2008. u 00:59 - pre 198 meseci
Heh, pre skoro tacno tri godine sam imao vrlo slican problem koji nisam uspeo resiti. Evo link, ako ima nesto korisno tamo a i cisto zbog poveznosti slicnih tema - http://www.elitesecurity.org/t91336
(ne znam sta sam posle poslednjeg posta u toj temi radio, u svakom slucaju nisam uspeo)
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: InvalidCast pri Debug-u18.01.2008. u 11:27 - pre 198 meseci
Ne bi trebalo da ti ima veze, removable storage se vodi kao lokalni diskovi ne podpada pod default codesecuity zabrane.
Pogledaj kao prvo sledece, da li se uopste instancira objekat kroz CreateInstance, mozda cast puca zato sto kreiranje objekta nije proslo kako treba i vratilo null. CreateInstance vraca null ako tip sa tim imenom nije pronadjen (za svaki slucaj, umesto t.Namespace & "." & t.Name koristi t.FullName)
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

vujkev
Beograd

Član broj: 8072
Poruke: 1347
212.200.243.*



+104 Profil

icon Re: InvalidCast pri Debug-u21.01.2008. u 10:28 - pre 198 meseci
Eto mene opet

Objekat se kreira bez greške
Code:

Dim o As Object = Asm.CreateInstance(t.FullName)
cParser = DirectCast(o, SuVu.Tabulator.Common.IParser)


ali dalje opet isto
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: InvalidCast pri Debug-u21.01.2008. u 11:36 - pre 198 meseci
Cek, moze li uopste da se cast-uje u interface? Ne kazem da ne moze, ali mi malo cudno izgleda, jer ne mozes imati instancu interfejsa.
 
Odgovor na temu

vujkev
Beograd

Član broj: 8072
Poruke: 1347
212.200.243.*



+104 Profil

icon Re: InvalidCast pri Debug-u21.01.2008. u 11:48 - pre 198 meseci
Kad prebacim u release konfiguraciju ovaj kod radi tako da je odgovor: "Da, može"
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: InvalidCast pri Debug-u21.01.2008. u 11:49 - pre 198 meseci
Mozes imati referencu na interfejs unutar postojece instance neke klase koja ga implementra, i ta reference se izvlaci kroz castovanje i u potpunosti je ukljucena u GC object graph (tj objekat nece biti pociscen kad sve reference odumru ako postoji interface referenca nad tim objektom):

IParser ip = (IParser)objekat;

jedino sto ne mozes je da kreiras novu instancu interfejsa:

IParser ip = new IParser();



Citat:
vujkev: Eto mene opet Objekat se kreira bez greške ali dalje opet isto


Ajd sad pogledaj koji je to objekat i da li on stvarno implementira IParser


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

vujkev
Beograd

Član broj: 8072
Poruke: 1347
212.200.243.*



+104 Profil

icon Re: InvalidCast pri Debug-u21.01.2008. u 12:09 - pre 198 meseci
Čisto kao podsetnik, rekao sam da kad kopiram projekat sa externog na interni HDD sve radi kako treba.

Ali da ne budem lenj proverio sam i koji je to objekat, i njegov kod i kao prva linija posle deklaracije klase stoji
Code:

    Implements SuVu.Tabulator.Common.IParser


tako da i to pada u vodu
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

[es] :: .NET :: InvalidCast pri Debug-u

[ Pregleda: 1637 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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