VB .NET 4.5 Konvertiranje objekata

poruka: 8
|
čitano: 1.555
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
offline
VB .NET 4.5 Konvertiranje objekata

Pitanje za znalce.

Imam klasu system.net.sockets.tcpclient

i moju klasu mytcpclient

koja nasljeđuje system.net.sockets.tcpclient i dodaje event newmsg

problem koji imam je što se javlja greška na liniji:

Dim Client As myTcpClient = srv.AcceptTcpClient

jer srv.accepttcpclient vraća onaj standardni tcpclient, ne mytcpclient.

 

pokušao sam:

Dim tmpclient As TcpClient = srv.AcceptTcpClient

dim mytcp as mytcpclient = CType(tmpclient, myTcpClient)

i

Dim tmpclient As TcpClient = srv.AcceptTcpClient

dim mytcp as mytcpclient = DirectCast(tmpclient, myTcpClient)

 

i u sva tri slučaja se javlja ista greška.

 

Je li postoji način kako mogu konvertirati objekt iz jednog tipa u drugi (originalni u prošireni)?

 

 

Hvala

http://www.plecko.com.hr
Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
VB .NET 4.5 Konvertiranje objekata

Inače neznam VB, ali znam općenito OOP. Koliko vidim ti pokušavaš natjerati životinju iz porodice mačaka da bude tigar. A ne može, jer je taj objekt samo tipa mačka. Dakle nemozes downcast-ati kako ti zelis, samo kad si siguran da kastas u pravi tip objekta.

Moj PC  
0 0 hvala 0
17 godina
offline
VB .NET 4.5 Konvertiranje objekata

MSDN tvrdi da je moguće castati base klasu u derived klasu koja nasljeđuje tu base klasu, no nigdje se ne navodi primjer kako je to moguće napraviti.

 

prema tome što piše, ovo:

class mytcpclient 

inherits tcpclient

public event newmsg(msg as string)

'neda mi se pretipkavati dalje ali imam thread koji čeka poruke i podiže event po potrebi

end class

 

dim a as tcpclient

dim b as mytcpclient

b = trycast(a,mytcpclient)

 

ovo bi trebalo tako raditi - i to samo u ovom smjeru (prema tome što MSDN kaže)

http://www.plecko.com.hr
Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Re: VB .NET 4.5 Konvertiranje objekata
franjo tahy kaže...

Pitanje za znalce.

Imam klasu system.net.sockets.tcpclient

i moju klasu mytcpclient

koja nasljeđuje system.net.sockets.tcpclient i dodaje event newmsg

problem koji imam je što se javlja greška na liniji:

Dim Client As myTcpClient = srv.AcceptTcpClient

jer srv.accepttcpclient vraća onaj standardni tcpclient, ne mytcpclient.

 

pokušao sam:

Dim tmpclient As TcpClient = srv.AcceptTcpClient

dim mytcp as mytcpclient = CType(tmpclient, myTcpClient)

i

Dim tmpclient As TcpClient = srv.AcceptTcpClient

dim mytcp as mytcpclient = DirectCast(tmpclient, myTcpClient)

 

i u sva tri slučaja se javlja ista greška.

 

Je li postoji način kako mogu konvertirati objekt iz jednog tipa u drugi (originalni u prošireni)?

 

 

Hvala

Ovo boldano ti je odgovor. Mozes ti downcastati, ali taj objekt koji downcastas mora biti tog tipa u koji ga kastaš. Recimo ko da kazes nekome: "Ja imam auto Ferrari". On na temelju toga nece moc ic okolo govoriti da ti imas Ferrari Testa Rossu, kuzis, nego samo da imas Ferrari.

17 godina
offline
VB .NET 4.5 Konvertiranje objekata

Ali ja nemam Ferarri i Ferarri Testarossa, ja imam Ferarri i Ferarri koji mi zna reći 'vidi me, krećem se'

Nemam razlike u propertyjima, samo imam novi event i metodu

 

Držim se onog napisanog na MSDN-u gdje kaže da mogu Ferarri castati u Ferarri testarosa, s tim da bi novi objekt trebao imati nedefinirani property (defaultni)

 

http://www.plecko.com.hr
Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
VB .NET 4.5 Konvertiranje objekata
Poruka je uređivana zadnji put uto 30.7.2013 14:26 (vasso123).
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: VB .NET 4.5 Konvertiranje objekata

To što ti pokušavaš je nesigurna pretvorba koja se primjerice u C++u može provjeriti dynamic_cast operatorom, a dopušta se samo ako je bazna klasa polimorfna. Možda baš iz tog razloga je i nedopustiva za izvesti u VB-u.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
17 godina
offline
Re: VB .NET 4.5 Konvertiranje objekata

:(

 

Je li onda netko zna što točno u tcplisteneru radi metoda .accepttcpclient? Kako bi možda mogao napisati svoju metodu koja će mi vratiti objekt moje klase?

 

 

http://www.plecko.com.hr
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice