2017-01-31 169 views
0

我正在寻找一种方式来解决我的问题,如何获得唯一标识符。在执行代码

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

在Class_Initialize函数中是否有任何可能性来获取唯一标识符以使用此id和实例设置数组?

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

这使我能够在代码中的任何地方获取正确的实例。

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

例如,DLL A具有ClassA和ClassB的创建是在DLL B.该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

你不会有任何其他的解决办法不是通过一个GUID或一些其他类型从父实例子实例标识符,在构造函数中或在二传手,为你难过 – deblocker

回答

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 
+0

谢谢你你的代码,但是这个函数返回一个ID总是不同的 – user1069516

+0

正是。它会在每次通话中返回一个唯一的ID。从你的帖子看来,你似乎在寻找一个可以分配给你的课程实例的唯一ID?当创建一个类时,让它创建一个唯一的ID,或者传入一个唯一的ID,那么你需要使用它来跟踪你的类实例。如果您需要协助跟踪课程,您需要提供比您的文章中的当前通用说明更多的信息(和代码!)。 – MarkL