【问题标题】:How to get unique identifier while executing code如何在执行代码时获取唯一标识符
【发布时间】:2017-02-01 15:36:34
【问题描述】:

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

我有一个使用 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,但很难做到,所以我通过使用内存来寻找“地下”解决方案......

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

感谢您的帮助

【问题讨论】:

  • 请提供代码
  • 您将没有其他解决方案,只能在构造函数或 setter 中将 guid 或某种其他类型的标识符从父实例传递给子实例,因为您很难过

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


【解决方案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

【讨论】:

  • 感谢您的代码,但此函数返回的 ID 总是不同
  • 没错。它在每次调用时返回一个唯一的 id。从您的帖子中,您似乎正在寻找一个可以分配给您的类实例的唯一 ID?创建一个类时,让它创建一个唯一的 id,或者传入一个唯一的 id,然后您需要使用它来跟踪您的类实例。如果您在跟踪课程方面需要帮助,您需要在帖子中提供比当前通用描述更多的信息(和代码!)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 2013-09-19
  • 1970-01-01
相关资源
最近更新 更多