Hej allihop! Ingen lösning, men Implements i VB är INTE arv det gör bara så att man förbinder sig att implementera samma interface som en anna klass. Ok, jo men i princip blir det ju samma sak. de publika objekten i Vi kanske pratar runt varandra, men med implements får du ingen kod på köpet. I VB-script är det rätt meningslöst med implements eftersom det är 'late binding' på alla objekt. Tyvärr, finns inget sådant stöd. FYI:Klassarv i ASP? [ LÖST! ]
Vet någon om man kan skapa ett arv mellan klasser på en ASP-sida?
I VB fungerar det ju med "Implements", som skapar typ ett "arv", och
jag har hört att arv även funkar i PHP. Det borde ju finnas ett
motsvarande kommando i ASP?
Tack på förhand! Sv: Klassarv i ASP? [ EJ LÖST, NÅGON? ]
/johan/Sv: Klassarv i ASP? [ EJ LÖST, NÅGON? ]
"toppklassen" blir i alla fall tillgängliga för "underklasserna". Eller?Sv: Klassarv i ASP? [ EJ LÖST, NÅGON? ]
Implements kan man jämföra med abstrakta basklasser i C++. Alltså ingen kod, bara gränssnitt.
/johan/Sv: Klassarv i ASP? [ EJ LÖST, NÅGON? ]
Du kan dock bygga egna klasser, VB Script Classer, men det finns ingen arvbarhet.
Ngt liknande funkar rätt bra:
'## -- data object --
Class DBObject
Private m_DB
Public ConnectionString
Public Function Find_Something(ByVal lngID, oCurrBisObject)
Dim rstSomething
Dim strSQL
strSQL = "SELECT * FROM SomeTable WHERE SomeIDField = " & lngID
Set rstSomething = Server.CreateObject("ADODB.Connection")
rstSomething.Open strSQL, m_DB, 0, 1
If rstSomething.EOF Then
Find_SOmething = False
Else
Find_Something = True
With oCurrBisObject
.SomeProperty = rstSomething("Field1")
.SomeProperty2 = rstSomething("Field2")
End With
End If
rstSomething.Close
Set rstSomething = Nothing
End Function
Private Sub Class_Initialize()
Set m_DB = Server.CreateObject("ADODB.Connection")
End Sub
Private Sub Class_Terminate()
Set m_DB = Nothing
End Sub
End Class
'## -- business object --
Class BizObject
Private m_oDB
Public ConnectionString
Public SomeProperty
Public Function FindByID(ByVal lngID)
m_oDB.ConnectionString = ConnectionString
FindByID = m_oDB.Find_Something(lngID, Me)
End Function
Private Sub Class_Initialize()
Set m_oDB = New DBObject
End Sub
Private Sub Class_Terminate()
Set m_oDB = Nothing
End Sub
End Object
'## -- asp file --
Dim objBis
Dim strConnString
Dim bolExists
Dim lngSomeID
lngSomeID = Request.QueryString("sid")
Set objBis = New BizObject
objBis.ConnectionString = "MyDSN"
bolExists = objBis.FindByID(lngSomeID)
If bolExists Then
Response.Write objBis.SomeProperty1 & " " & objBis.SomeProperty2
Else
Response.Write "Nothing in db that match this id: " & lngSomeID
End If
Set objBis = Nothing
cya,
PatrikBSv: Klassarv i ASP? [ LÖST ]
har börjat att skriva på en liten artikel-serie i hur man kan använda denna teknik. I denna artikel serie (?-antal delar) går jag igenom hur man gör en mycket "basic" gästbok och visar sedan hur man lätt lägger till nya funktioner till den, bugg-fixning m.m UTAN att behöva gå in och "kladda" mer än nödvändigt i asp-sidan.
Nu är ju detta inte det optimala sättet att koda asp på rent prestanda mässigt, men väl underhållsmässigt, och om man har möjlighet att koda sina egna dll'er så bör man göra det istället och installera dessa på servern. Så, denna artikel-serie blir för de mindre lyckligt lottade med egen server ô¿ô
När den blir klar .... förhoppningsvis efter helgen och sedan tar det väl ngn dag innan Pelle lägger upp den.
cya,
PatrikB