在.NET COM Interop中使用工厂方法会提高性能吗?

时间:2010-06-25 14:28:57

标签: .net performance com vb6 interop

我正在开发一个通过COM Interop使用.NET对象的VB6应用程序。该应用程序运行良好,但我觉得每次从VB6中实例化.NET对象时,我都会受到性能影响。

例如,我有VB6代码循环记录集并为记录集中的每个项实例化新的.NET对象并将其添加到数组(CartItemDiscountEngine都是.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)

1 个答案:

答案 0 :(得分:1)

跨越互操作拨打电话总是很昂贵。我认为您所描述的解决方案不会提高性能。最好的办法是在vb6中循环记录集,将每个属性添加到数组中,例如ary_SKU(),ary_Quantity()等等。然后一旦完成将数组作为参数传递给.Net并在.net端再次遍历数组并从数组中的数据构建类