Ja. Du sätter Instancing till Private.
Går det att på något sätt göra så att en class-modul endast går att komma åt från klasser i projektet och inte utanför?
10 svar · 286 visningar · startad av Erik Juhlin
Går det att på något sätt göra så att en class-modul endast går att komma åt från klasser i projektet och inte utanför?
Ja. Du sätter Instancing till Private.
Men då försvinner transaction alternativen. :(
Då återstår: PublicNotCreatable.
Använder jag PublicNotCreatable så kan jag inte komma åt klassen från andra klasser i projektet. :(
PublicNotCreatable. Other applications can use objects of this class only if your component creates the objects first. Other applications cannot use the CreateObject function or the New operator to create objects from the class
Borde ju fungera!?
Använder jag PublicNotCreatable så kan jag inte komma åt klassen från andra klasser i projektet.
Nu hänger jag inte riktigt med. Blandar du inte ihop "projekt" och "projektgrupp"?
Oavsett om du använder "Private" eller "PublicNotCreatable" så kan du alltid komma åt klassen från andra klasser i samma komponent (projekt).
Private-> Du kan bara skapa instanser av klassen från andra klasser i samma komponent.
PublicNotCreatable->Du kan bara skapa instanser av klassen från andra klasser i samma komponent. MEN du kan räcka över en instans av klassen till extern kod. Den externa koden kan däremot inte anropa "New" eller "CreateObject" på egen hand.
Det är i samma komponent. :l
Kan det ha med att vi använder denna funktion istället för CreateObject?
Public Function CtxCreateObject(ByVal sProgID As String) As Object
Dim objContext As ObjectContext
Set objContext = GetObjectContext
If Not (objContext Is Nothing) Then
'Create an instance of the component
Set CtxCreateObject = objContext.CreateInstance(sProgID)
Set objContext = Nothing
Else
Set CtxCreateObject = CreateObject(sProgID)
End If
End Function
Kan det ha med att vi använder denna funktion istället för CreateObject?
Ja. Det är nog till och med så illa som att du måste använda "New" för klasser som är PublicnotCreatable eller Private. Och att använda "New" på komponenter som kör i MTS:en är kanske inte alltid så lyckat? Så jag har nog ingen lösning på problemet på rak arm. Tyvärr.
Urk!
Skiter i det då. Inget hemligt där.
Mer för att inte någon klantig praktikant eller liknande ska få för sig att gå rakt på de klasserna. :)