【发布时间】:2015-11-30 13:55:51
【问题描述】:
如何在通用方法中访问继承的属性?
Public Sub DoSomething(Of BusObjectType)(MyBusObject As BusObjectType)
MyBusObject.Property1 = "Something"
End Sub
Property1 继承自基类。我没有接口,只有我所有业务对象的基类。
【问题讨论】:
标签: .net vb.net inheritance
如何在通用方法中访问继承的属性?
Public Sub DoSomething(Of BusObjectType)(MyBusObject As BusObjectType)
MyBusObject.Property1 = "Something"
End Sub
Property1 继承自基类。我没有接口,只有我所有业务对象的基类。
【问题讨论】:
标签: .net vb.net inheritance
您可以将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
【讨论】:
如果这是您正在做的全部,那么该方法不需要是通用的:
Public Sub DoSomething(MyBusObject As {base class})
MyBusObject.Property1 = "Something"
End Sub
仅当您返回该值并希望它被正确键入,或者调用另一个需要特定类型的通用方法时,您才需要使其成为通用。您可以将派生类作为参数传递给基类。
例如:
Public Sub Feed(pet As Animal)
// feed the pet
End Sub
您可以传入Dog、Cat 或Ferret(如果您愿意的话)。您不需要为每种宠物类型设置不同的方法或使方法通用。
【讨论】: