我正在开发一个通过COM Interop使用.NET对象的VB6应用程序。该应用程序运行良好,但我觉得每次从VB6中实例化.NET对象时,我都会受到性能影响。
例如,我有VB6代码循环记录集并为记录集中的每个项实例化新的.NET对象并将其添加到数组(CartItem
和DiscountEngine
都是.NET对象):
Set lCartItemClass = New CartItem
Set lCartItem = lCartItemClass
lCartItem.SKU = .Fields("SKU").Value
lCartItem.Quantity = .Fields("Quantity").Value
Set lCartItemsClass(i) = lCartItem
'... '
mCartClass.CartItems = lCartItemsClass
Set mDiscountEngine.Cart = mCartClass
我是否可以通过添加一个工厂方法来获得性能优势,该方法接受我想要的属性参数并在执行的.NET端处理对象实例化?所以不是上面的代码,我会有类似的东西:
mDiscountEngine.Cart.AddCartItem( .Fields("SKU").Value, _
.Fields("Quantity").Value)
答案 0 :(得分:1)
跨越互操作拨打电话总是很昂贵。我认为您所描述的解决方案不会提高性能。最好的办法是在vb6中循环记录集,将每个属性添加到数组中,例如ary_SKU(),ary_Quantity()等等。然后一旦完成将数组作为参数传递给.Net并在.net端再次遍历数组并从数组中的数据构建类