如何在执行代码

时间:2017-01-31 15:52:32

标签: c# asp.net-mvc asp.net-mvc-3 vb6

我正在寻找解决问题的方法:

我有一个使用VB6 DLL的C#MVC Web应用程序。

在这个DLL中,有一个对所有用户都通用的类,我想改变这种架构。

Class_Initialize函数是否有可能获得一个唯一的标识符来设置具有此id和实例的数组?

我的目标是不在所有函数调用中添加此id。

这允许我在代码中的任何位置获取正确的实例。

我可以使用Windows API函数或其他...

例如,DLL A具有ClassA并创建DLL B中的ClassB.ClassA可以由exe应用程序或c#web应用程序创建,并通过setter函数在ClassA中添加ID。在ClassB构造函数中,我想获得ClassA ID。如果ClassB有一个setter并且ClassA创建ClasseB,则可以通过setter传递id。但问题是ClassB可以由ClassZ创建,她自己由ClassY创建,她自己......由ClassA创建

我的程序有95个项目和1000个类。解决方案可能是在所有类中通过setter传递id但是很难做到这一点所以我寻找" undergroud"通过使用内存解决方案,例如......

如果在ClassB中我可以检索ClassA和id,那对我来说太棒了

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您可以使用以下VB6代码创建唯一的guid。然后,您可以在类中使用它来跟踪所需的实例。但是,由于原始帖子中没有代码提供的信息量很少,我并不完全确定。

Public Type GUID
   Data1 As Long
   Data2 As Integer
   Data3 As Integer
   Data4(7) As Byte
End Type
Public Declare Function CoCreateGuid Lib "OLE32.DLL" (pGuid As GUID) As Long

Public Function GetGUID() As String
  Dim udtGUID As GUID
  Dim sGetGUID As String

  On Error Resume Next
  If (CoCreateGuid(udtGUID) = 0) Then
    sGetGUID = String(8 - Len(Hex$(udtGUID.Data1)), "0") & Hex$(udtGUID.Data1) & "-" & _
               String(4 - Len(Hex$(udtGUID.Data2)), "0") & Hex$(udtGUID.Data2) & "-" & _
               String(4 - Len(Hex$(udtGUID.Data3)), "0") & Hex$(udtGUID.Data3) & "-" & _
               IIf((udtGUID.Data4(0) < &H10), "0", "") & Hex$(udtGUID.Data4(0)) & _
               IIf((udtGUID.Data4(1) < &H10), "0", "") & Hex$(udtGUID.Data4(1)) & "-" & _
               IIf((udtGUID.Data4(2) < &H10), "0", "") & Hex$(udtGUID.Data4(2)) & _
               IIf((udtGUID.Data4(3) < &H10), "0", "") & Hex$(udtGUID.Data4(3)) & _
               IIf((udtGUID.Data4(4) < &H10), "0", "") & Hex$(udtGUID.Data4(4)) & _
               IIf((udtGUID.Data4(5) < &H10), "0", "") & Hex$(udtGUID.Data4(5)) & _
               IIf((udtGUID.Data4(6) < &H10), "0", "") & Hex$(udtGUID.Data4(6)) & _
               IIf((udtGUID.Data4(7) < &H10), "0", "") & Hex$(udtGUID.Data4(7))
    GetGUID = LCase$(sGetGUID)
  End If

End Function