首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Me对象

使用Me对象
EN

Stack Overflow用户
提问于 2022-07-14 16:18:35
回答 2查看 57关注 0票数 0
代码语言:javascript
复制
MustInherit Class Person
    Overridable Function TableName() As String
        Return "Person"
    End Function
    Sub Save
        DoSomething(Me)
    End Sub
End Class

Class Staff
    Inherits Person
    Overrides Function TableName() As String
        Return "Staff"
    End Function
    Overloads Sub Save()
        MyBase.Save()
        DoSomething(Me)
    End Sub
End Class
Sub DoSomething(o as Object)
    DoAnotherThing(o.TableName)
End Sub

有没有办法让我在DoSomething中引用Person.Save中的人员和Staff.Save中的Staff?目前,他们都提到了员工实例。

我试图编写一个普通例程来将属性保存到数据库中,问题是有3个对象继承了Person (人员、客户端、联系人)和大量几乎重复的代码,这使得4个数据库表(Person具有与3相同的数据)。

EN

回答 2

Stack Overflow用户

发布于 2022-07-14 16:52:58

我想知道这种结构是否有帮助

代码语言:javascript
复制
MustInherit Class BasePersons
    'stuff common to classes that Inherit here
    MustOverride Function TableName() As String

    MustOverride Sub Save()

    Sub DoSomething(BP As BasePersons)
        'code
        Debug.WriteLine(BP.TableName)
    End Sub
End Class

Class Person
    Inherits BasePersons

    Overrides Function TableName() As String
        Return "Person"
    End Function

    Overrides Sub Save()
        DoSomething(Me)
    End Sub
End Class

Class Staff
    Inherits BasePersons

    Overrides Function TableName() As String
        Return "Staff"
    End Function

    Overrides Sub Save()
        DoSomething(Me)
    End Sub
End Class
票数 0
EN

Stack Overflow用户

发布于 2022-07-15 01:03:01

因为它只适用于一个对象,所以我重新定义了几个子对象。

代码语言:javascript
复制
Sub DoSomething(o as Object, optional IsPerson as Boolean = false)
    Dim TableName As String = If(IsPerson, "Person", obj.TableName)        
    DoAnotherThing(o, TableName)
End Sub

Sub DoAnotherThing(o as Object, TableName as string)

哈奇,一点也不,但对我来说已经足够好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72983699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档