我必须将Convert Int32转换为Guids,这就是我想出来的.
public static class IntExtensions
{
public static Guid ToGuid(this Int32 value)
{
if (value >= 0) // if value is positive
return new Guid(string.Format("00000000-0000-0000-0000-00{0:0000000000}", value));
else if (value > Int32.MinValue) // if value is negative
return new Guid(string.Format("00000000-0000-0000-0000-01{0:0000000000}", Math.Abs(value)));
else //if (value == Int32.MinValue)
return new Guid("00000000-0000-0000-0000-012147483648"); // Because Abs(-12147483648) generates a stack overflow due to being > 12147483647 (Int32.Max)
}
}
Run Code Online (Sandbox Code Playgroud)
但它有些丑陋.谁有更好的主意?
更新:
是的,我知道整件事情都是丑陋的,但我失去了想法.问题是.我正在获取数据并且必须将其存储到表中我无法更改.发送数据主键是Int,而我必须存储的表主键是Guid.问题是我必须了解发件人正在谈论的对象,但只能将其存储为Guid.
更新2:
好的,我知道我必须在这里提供更多信息.我是一个接收数据的Web服务,必须将数据传递给我无法控制的接口.所以我既不能模拟收到的数据,也不能模拟我必须发送数据的(接口)数据库.另外,我必须以某种方式映射这两个东西,以便我能以某种方式更新项目.叹
c# ×1