如何访问Generic Method中的继承属性?
Public Sub DoSomething(Of BusObjectType)(MyBusObject As BusObjectType)
MyBusObject.Property1 = "Something"
End Sub
Property1继承自基类。我没有界面,只是我所有业务对象的基类。
答案 0 :(得分:2)
您可以在通用定义中添加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
答案 1 :(得分:1)
如果这是所有,那么该方法不需要是通用的:
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
(如果这是您的事情)。您不需要为每种宠物类型使用不同的方法或使方法通用。