如何获取任何方法调用的唯一键?

时间:2010-11-15 11:39:33

标签: c# .net hash

我需要为项目中的任何唯一方法调用生成'hash'。例如,我有方法string GetSomeString(int someInt)。所以,在这些情况下我需要不同的哈希值:

string GetSomeString(1) -- key 1
string GetSomeString(2) -- key 2
string GetSomeString(3) -- key 3

如何生成这种哈希?

UPD: 我想通过一些唯一的哈希为每个方法调用记录任何方法执行。像这样:

public delegate T HelperFactoryMethod<T>();

public static LogMethodExecution<T>(HelperFactoryMethod<T> factoryMethod) where T: class
{
   string key = GetHashString(factoryMethod);
   StoreToDatabase(key);
   ...
}

GetHashString()的结果示例必须如下:

  1. 列表GetSomeObjects(1,ObjectType.Simple)必须是'ListGetSomeObjects_1_ObjectType.Simple'或类似的东西。
  2. 列表GetSomeObjects(2,ObjectType.None)必须是'ListGetSomeObjects_2_ObjectType.None'或类似的东西。

2 个答案:

答案 0 :(得分:2)

您可以使用哈希函数为所有参数值生成唯一键。 例如:

public string GetSomeString(int someInt)
{
    MD5CryptoServiceProvider cryptoServiceProvider = new MD5CryptoServiceProvider();
    byte[] data = Encoding.ASCII.GetBytes(String.Format("{0}{1}", "methodName", someInt));
    data = cryptoServiceProvider.ComputeHash(data);
    return Convert.ToString(data);
}

每个唯一的'方法名称'和参数都将返回一个唯一键

答案 1 :(得分:1)

也许我没有正确理解你的问题,但为什么你不使用与hash相同的someInt?