Я использую сочетание фабричных функций (в родительских классах), которые затем создают экземпляр объекта и вызывают метод Friend Init()
.
Class CObjects
:
Public Function Add(ByVal Param1 As String, ByVal Param2 As Long) As CObject
Dim Obj As CObject
Set Obj = New CObject
Obj.Init Param1, Param2
Set Add = Obj
End Function
Класс CObject
:
Friend Sub Init(ByVal Param1 As String, ByVal Param2 As Long)
If Param1 = "" Then Err.Raise 123, , "Param1 not set"
If Param2 < 0 Or Param2 > 15 Then Err.Raise 124, , "Param2 out of range"
'Init object state here
End Sub
Я знаю, что область действия Friend
не окажет никакого влияния на проект, но она действует как предупреждение, что это только для внутреннего использования.Если эти объекты доступны через COM, то метод Init
не может быть вызван, и установка класса на PublicNotCreatable
останавливает его создание .