X-Received: by 10.157.45.200 with SMTP id g66mr5323492otb.84.1475878271449; Fri, 07 Oct 2016 15:11:11 -0700 (PDT) X-Received: by 10.36.225.205 with SMTP id n196mr70804ith.0.1475878271420; Fri, 07 Oct 2016 15:11:11 -0700 (PDT) Path: csiph.com!feeder.erje.net!2.us.feeder.erje.net!news.glorb.com!o19no1042972ito.0!news-out.google.com!w143ni3081itb.0!nntp.google.com!o19no1042961ito.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: it.comp.lang.visual-basic Date: Fri, 7 Oct 2016 15:11:10 -0700 (PDT) In-Reply-To: <526a5606-aa26-4ee0-89d0-60be9fa9f9f1@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=80.116.116.246; posting-account=eitZdgoAAAC6C9CXmyhLNaQM3MgI3eZM NNTP-Posting-Host: 80.116.116.246 References: <6df688b1-a619-48d9-ae14-75771252eeec@googlegroups.com> <526a5606-aa26-4ee0-89d0-60be9fa9f9f1@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <36bb6758-a960-4e83-b01f-27a300509df0@googlegroups.com> Subject: Re: Architettura interna di ADO.Net From: Luca D Injection-Date: Fri, 07 Oct 2016 22:11:11 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Xref: csiph.com it.comp.lang.visual-basic:18867 On Friday, October 7, 2016 at 11:29:22 PM UTC+2, Antologiko wrote: > Ciao, grazie della risposta. > A dire il vero non capisco la necessita del metodo OnCreateXX(). > Secondo me basta definire nella classe base >=20 > Public Function CreateXX() As BaseXX > =C2=A0 =C2=A0 Return New BaseXX() > End Function >=20 > e poi, nella classe derivata >=20 > Public Overloads Function CreateXX() As DerivataXX > =C2=A0 =C2=A0 Return New DerivataXX() > End Function No, non basta... se passi un istanza della classe derivata a funzioni che h= anno come parametro la classe base, e da l=C3=AC chiami CreateXX, non viene= eseguito il codice che ti aspetti=20 Immagina di avere una funzione cos=C3=AC Private Sub TestFunction(db As BaseConnection) Dim command As BaseCommand =3D db.CreateCommand Debug.WriteLine(command.TestMe) End Sub e chiamarla con TestFunction(New BaseConnection) TestFunction(New DerivedConnection) Ora, prendi prima questo set di classi (http://pastebin.com/irVuf9V9) fatte= come dici tu, e poi quest'altro (http://pastebin.com/8SVg2cMf) fatte come = dico io, e vedrai che il risultato cambia. E' 'override' che fa funzionare il tutto, ma non lo puoi applicare se la fu= nzione cambia il tipo di ritorno, da cui la soluzione di separare in due pr= otected/public