【问题标题】:.NET Inheritance/Interfaces.NET 继承/接口
【发布时间】:2015-11-30 13:55:51
【问题描述】:

如何在通用方法中访问继承的属性?

Public Sub DoSomething(Of BusObjectType)(MyBusObject As BusObjectType)

    MyBusObject.Property1 = "Something"

End Sub

Property1 继承自基类。我没有接口,只有我所有业务对象的基类。

【问题讨论】:

    标签: .net vb.net inheritance


    【解决方案1】:

    您可以将As BaseClassName 添加到泛型定义中,以确保它属于该基本类型。

    例如:

    Public Sub DoSomething(Of BusObjectType As BaseClassName)(MyBusObject As BusObjectType)
    
        MyBusObject.Property1 = "Something"
    
    End Sub
    

    更多信息请参见此处(“约束”部分):https://msdn.microsoft.com/en-us/library/w256ka79.aspx

    【讨论】:

      【解决方案2】:

      如果这是您正在做的全部,那么该方法不需要是通用的:

      Public Sub DoSomething(MyBusObject As {base class})
      
          MyBusObject.Property1 = "Something"
      
      End Sub
      

      仅当您返回该值并希望它被正确键入,或者调用另一个需要特定类型的通用方法时,您才需要使其成为通用。您可以将派生类作为参数传递给基类。

      例如:

      Public Sub Feed(pet As Animal)
      
          // feed the pet
      
      End Sub
      

      您可以传入DogCatFerret(如果您愿意的话)。您不需要为每种宠物类型设置不同的方法或使方法通用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        • 2022-12-12
        • 1970-01-01
        • 2021-04-10
        • 2011-06-12
        相关资源
        最近更新 更多