Есть ли способ получить доступ к функциям (VB) в классе без создания экземпляра объекта? - PullRequest
0 голосов
/ 14 мая 2019

У меня есть три класса, CarAdd, Car и EntityObject.CarAdd вызывает методы в EntityObject, но не имеет немедленного доступа к ним.Вместо этого он создает объект типа Car и использует его для вызова методов.Проблема в том, что EntityObject не может быть создан, поэтому есть ли у класса Car способ вызывать методы EntityObject без объекта?

Я пытался включить функциональность «shared» в заголовок метода, но так какфункция реализует что-то, я не могу сделать это успешно.

'This executes when a button is pressed on the UI. _mCar is an object of type 'Car
'In class CarAdd
Public Sub BeginEdit()
        If _mCar IsNot Nothing Then _mCar.BeginEdit()
    End Sub

'This is the code I added to try and make this work. Since EO is nothing, 'though, the if statement never executes.
'In class Car
Private EO As EntityObject
Public Sub BeginEdit()
        If EO IsNot Nothing Then
            Call EO.BeginEdit()
        End If
    End Sub

'This is the method that I want to execute
'In class EntityObject
Public Sub BeginEdit() Implements System.ComponentModel.IEditableObject.BeginEdit
        If Not _blnIsEditing Then
            _blnIsEditing = True
            _OriginalObject = TryCast(Me.MemberwiseClone(), EntityObject)
        End If
    End Sub

Я надеялся, что вызов метода, по сути, будет проходить через класс Car и класс EntityObject, но это не то, чтопроисходит.Вместо этого оператор if в классе Car никогда не выполняется, поэтому метод никогда не вызывается.

1 Ответ

2 голосов
/ 14 мая 2019

Нет, если Sub / Function не Shared (BeginEdit не Shared в EntityObject). По определению, не Shared Sub или Function зависит от экземпляра и может использоваться только через экземпляр.

Подробнее об общих / не общих участниках класса здесь .

...