5

我有一个要转换为 VB.Net 2012 的 vb6 COM 对象

我的示例代码如下所示:

Dim ObjContext ,objx ,objy As Object

Dim Rs As ADODB.Recordset

Set ObjContext = GetObjectContext

Set objx =ObjContext.CreateInstance("abc.class1")

Set Objy = ObjContext.CreateInstance("abcde.class2")


Set Rs = objx.getvalue(query)

 If Rs.EOF And Rs.BOF Then

      ObjContext.SetAbort
        Set objx = Nothing
        Set ObjContext = Nothing
        Set Objy = Nothing

  End If

VB 2012 中 GetObjectContext() 和 createinstance() 的等价物是什么?

我怎样才能从.net 中删除这个概念?

4

2 回答 2

1

试试这个:
我想你想要这个

Dim ObjContext ,objx ,objy As Object

Dim Rs As ADODB.Recordset

Set ObjContext = GetObjectContext

Dim ObjContext As COMSVCSLib.ObjectContext

Dim objAppServer As New COMSVCSLib.AppServer

ObjContext = objAppServer.GetObjectContext()

Set objx =ObjContext.CreateInstance("abc.class1")

Set Objy = ObjContext.CreateInstance("abcde.class2")


Set Rs = objx.getvalue(query)

 If Rs.EOF And Rs.BOF Then

      ObjContext.SetAbort
        Set objx = Nothing
        Set ObjContext = Nothing
        Set Objy = Nothing

  End If
于 2013-10-01T13:04:24.993 回答
1

ObjectContext.CreateInstance 回到 Microsoft Transaction Server (MTS) 的方式(方式)。似乎在 COM+ 中不再需要通过对象上下文创建对象。在 COM+ 下,常规的 CreateObject() 做正确的事。

我在这里找到了这些信息:http: //blogs.msdn.com/b/deva/archive/2012/01/19/com-mts-custom-application-createobject-or-createinstance.aspx

如果该博客应该消失,这里是逐字逐句的内容:

最近,我与一位开发人员客户合作,他创建了一个基于 Visual Basic/COM+ 的解决方案(内部使用 Microsoft Messaging 库)。一般来说,他想知道他们应该使用 CreateObject 还是 CreateInstance?两者在 COM+ 中是否会产生相同或不同的相同效果?

在 Microsoft Transaction Server (MTS) 中,您必须在根对象中使用 ObjectContext.CreateInstance 来创建辅助对象以使事务流动。在 COM+ 中这仍然有效,但不再需要这样做。在 COM+ 中,CreateObject 包含 ObjectContext.CreateInstance 的功能。创建的对象参与调用者的活动。在 COM+ 中,您可以使用 Microsoft Visual Basic 中的标准 CreateObject 函数将事务流向适当的辅助对象。因此,CreateObject 和 CreateInstance 在 COM+ 中具有相同的效果。

于 2015-07-16T22:04:46.307 回答