我有以下方法:
Public Function RenderRateTable() As String
Private Function RenderRateTable(ToddVersionedObject As ToddVersionedObject,
FieldInfo As FieldInfo) As String
Private Function RenderRateTable(ArrayIndexes As List(Of ArrayIndexesAttribute.ArrayIndex),
ThreeDimensionalArray As ThreeDimensionalDecimalArrayType) As String
Private Function RenderRateTable(ArrayIndexes As List(Of ArrayIndexesAttribute.ArrayIndex),
TwoDimensionalArray As ArrayOfDecimalArraysType) As String
请注意,我正在重载的类型(ArrayOfDecimalArraysType
,ThreeDimensionalDecimalArrayType
)不是从同一基类继承的类。它们是不同于任何东西的不同结构。它们是由别人写的,我不能改变它们。
当我在同一类中称之为时,就像这样
Dim MyThreeDimensionalDecimalArrayType As ThreeDimensionalDecimalArrayType
RenderRateTable(MyArrayIndexes, CType(MyThreeDimensionalDecimalArrayType, Object))
它没有采用正确的方法。它只是RenderRateTable()
。
更奇怪的是,调用是用两个参数(参数)进行的,但这些是(忽略?)并调用一个不带参数的方法,不会抛出运行时错误!
我有Option Strict Off
,我传递给参数ThreeDimensionalArray
的变量是Object类型。
我正试图将它带到我有一堆重载的地方,并根据传递的Object
的类型选择正确的方法。
多态方法调用而不是Select Case
语句。我讨厌这样的条件块。
更新
我通过声明重载Public
来使代码工作,但我仍然不明白:
Private
方法
电话是在同一个班级内。答案 0 :(得分:3)
RenderRateTable()
为Public
,其余为Private
,这将阻止它从课堂外调用时使用正确的重载。
Option Strict On
很可能会指出这是一个问题:我建议您使用它来简化编程工作:)