草庐IT

c# - 如何从 DEV_BROADCAST_DEVICEINTERFACE 和设备实例 ID 获取友好的设备名称

我已经用RegisterDeviceNotification注册了一个窗口并能成功收到DEV_BROADCAST_DEVICEINTERFACE消息。但是,返回的结构中的dbcc_name字段始终为空。我的结构是这样定义的:[StructLayout(LayoutKind.Sequential)]publicstructDEV_BROADCAST_DEVICEINTERFACE{publicintdbcc_size;publicintdbcc_devicetype;publicintdbcc_reserved;publicGuiddbcc_classguid;[MarshalAs(Un

c# - 在 C# 和 DB 中创建 Guid 键之间的区别

我们使用Guid作为数据库中实体的主键。传统上,我们遵循让数据库在INSERT期间为实体设置ID的模式,我认为这主要是因为这通常是您使用自动递增字段或其他任何方式处理事情的方式。我越来越发现在对象构造期间在代码中进行键分配要容易得多,主要原因有两个:您知道一旦对象的构造函数运行,它的所有字段都已初始化。你永远不会有“半生不熟”的东西。如果您需要执行一批操作,其中一些操作取决于了解对象的键,您可以一次完成所有操作,而无需往返数据库。是否有任何令人信服的理由不以这种方式做事?也就是说,当使用Guid作为键时,是否有充分的理由将键分配留给数据库?编辑:很多人对是否应该将Guid用于PK有强烈

c# - 我们可以解码 Guid 以找出它是在何时何地生成的吗?

Thisarticle说明如何生成Guid。我的问题是,有什么方法可以找出我的网络场中哪台机器生成了这个Guid以及何时生成的? 最佳答案 NeilFenwick是正确的。然而,我们可以利用这种结构来发挥我们的优势。版本4(.Net)版本4UUID使用仅依赖于随机数的方案。该算法设置版本号以及两个保留位。所有其他位均使用随机或伪随机数据源设置。版本4UUID的格式为xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,其中x是任何十六进制数字,y是8、9、A或B之一。例如f47ac10b-58cc-4372-a5

c# - 为什么 regasm.exe 使用错误的 GUID 注册我的 C# 程序集?

我有一个c#程序集,我通过COM从Delphi(win32native)应用程序调用它。这适用于我测试过的所有机器,除了一台。问题是Delphi应用程序在尝试创建COM对象时得到“类未注册”。现在,当我查看HKEY_CLASSES_ROOT\DelphiToCSharp\CLSID下的注册表时,那里列出的GUID与AssemblyInfo.cs中的程序集Guid不同。它应该是相同的-它在安装它的所有其他计算机上都是相同的。我试过regasm/unregisterdelphitocsharp.dll,这会删除注册表项。然后,如果我执行regasmdelphitocsharp.dll,注册

c# - 是否可以创建相同的 guid

是否可以在一个应用程序中创建相同的guidGuidid=Guid.NewGuid(); 最佳答案 从技术上讲,是的。创建的Guid看起来像这样:26de36b7-76f5-4f17-8f9d-44eb429f151b这意味着32个字符可以是字母(26种可能性)或数字(10种可能性)这意味着每个位置有36个可能性,总共36^32,大约是。60000000000000000000000000000000000000000000000000。这意味着,如果您每毫秒创建200000000000000000000000000000000000

c# - 将值从字符串转换为 Guid 或 int 的泛型类型

我有一个通用方法,可以将id从字符串(例如,从ASP.NET窗体上的HiddenField的值中检索)转换为目标类型并对其执行某些操作。privatevoidMyMethod(stringrawId,ActiondoSomethingWithId){Tid=(T)Convert.ChangeType(rawId,typeof(T));doSomethingWithId(id);}T将是Guid或Int32,当它是Guid时,上面的代码(在运行时)失败,表示从String到Guid的转换无效。然后我想我可能会尝试检查类型,如果是Guid,则实例化一个新的Guid:varid=defaul

c# - 什么是 Type.GUID,它与 Type.Equals() 有什么关系?

我在尝试将System.RuntimeType的实例与泛型类型TOut进行比较时遇到了一些有趣的行为:TyperuntimeT=methodInfo.ReturnType;//getRuntimeTypeusingreflectionTypegenericT=typeof(TOut);//ThisconditionfailsbecauseruntimeTdoesn't//seemtoincludeanassemblyqualifiednameif(runtimeT.Equals(genericT)){...}这是我的证据:免责声明:我不知道GUID在CLR/类型系统的上下文中到底是什么

c# - 在 C# 中打开 Guid 的最有效方法

所以在C#中,switch语句只支持整数类型(不支持Guid),所以一个简单的O(1)比较表看起来是不可能的。在Guid上匹配的计算效率最高的方法是什么一开始我以为if(gMyGuid==newGuid("VALUE"))elseif(gMyGuid==newGuid("VALUE2")elseif(gMyGuid==newGuid("VALUE3")...elseif(gMyGuid==newGuid("VALUEn")然而,通过这样做,我每次都创建一个新的Guid实例以进行比较。我可以将Guid转换为字符串,然后在字符串上进行比较,但字符串比较是一个很长的比较字符串。非常感谢收到任

c# - 如何在 .net 中验证 Guid

请告诉我如何在.net中验证GUID并且它始终是唯一的? 最佳答案 Guid在99.9999999999999999999999999999999%的时间内是唯一的。这取决于你所说的验证是什么意思?确定Guid字符串实际上是Guid的代码是asfollows:privatestaticRegexisGuid=newRegex(@"^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$",Re

c# - 如何使用 SQL Server 将可为空的 guid 声明为 C# CLR 存储过程的可选参数

我正在编写一个部署在SQLServer2008R2(所以.Net3.5)上的C#存储过程,并希望将一个可选参数声明为可为null的guid。这是我首先尝试的:[Microsoft.SqlServer.Server.SqlProcedure]publicstaticvoidspCalcPerc(SqlGuidpID,SqlGuidsID=DBNull.Value)由于编译时错误而失败:Defaultparametervaluefor'sID'mustbeacompile-timeconstant这是因为DBNull.Value不是常量,这很痛苦。所以我尝试将声明更改为:[Microsof