Private Sub EvaluateDistanceBetweenIrregularSpots(irregularWeldspots As IEnumerable)
For Each spot1 In irregularWeldspots
spot1.row("XUNIT") Is Nothing Then Continue For...
spot1.row("XUNIT")
的问题为“选项Option On不允许延迟绑定”。
答案 0 :(得分:1)
您的代码中使用的IEnumerable接口不是通用的,这意味着其中的对象类型是未知的。
当您执行For Each spot1 In irregularWeldspots
时,spot1的实际类型是未知的,因此假定为Object
类型。类Object中没有“行”属性,所以这就是您收到错误的原因。
有两种方法可以解决该错误。首选方式是使用通用的IEnumerable接口:
Private Sub EvaluateDistanceBetweenIrregularSpots(irregularWeldspots As IEnumerable(Of Spot))
For Each spot1 In irregularWeldspots
spot1.row("XUNIT") Is Nothing Then Continue For...
如果您有一个非通用的IEnumerable对象,则可以轻松地将其强制转换为通用的IEnumerable:
Dim irregularWeldspots = enumerableObject.Cast<Spot>()
EvaluateDistanceBetweenIrregularSpots(irregularWeldspots) 'Now it works!
如果由于某种原因而无法执行此操作,则可以始终明确指定spot1变量的类型:
Private Sub EvaluateDistanceBetweenIrregularSpots(irregularWeldspots As IEnumerable)
For Each spot1 As Spot In irregularWeldspots
spot1.row("XUNIT") Is Nothing Then Continue For...
您可以用Spot
变量的实际类型替换spot1
。