是否可以在不创建对象实例的情况下访问类中的函数(VB)?

时间:2019-05-14 15:19:32

标签: vb.net xaml visual-studio-2012

我有三个类,CarAdd,Car和EntityObject。 CarAdd调用EntityObject中的方法,但没有立即访问它们的权限。而是创建一个Car类型的对象,并使用它来调用方法。问题在于,无法实例化EntityObject,所以Car类有没有办法在没有对象的情况下调用EntityObject的方法?

我尝试将“共享”功能包括在方法标题中,但是由于该功能实现了某些功能,因此我无法成功完成此操作。

'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类,但这不是正在发生的事情。相反,Car类中的if语句永远不会执行,因此永远不会调用该方法。

1 个答案:

答案 0 :(得分:2)

否,如果Sub / Function不是Shared({{1}中的BeginEdit不是Shared)则不是。根据定义,非EntityObject SharedSub是特定于实例的,只能通过实例使用。

有关共享/非共享班级成员here的更多信息。