Как получить уникальный ключ для любого вызова метода? - PullRequest
0 голосов
/ 15 ноября 2010

Мне нужно сгенерировать хеш для любого уникального вызова метода в моем проекте. Например, у меня есть метод 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 ]

2 голосов
/ 15 ноября 2010

вы можете использовать хеш-функцию, которая генерирует уникальный ключ для всех значений параметров. например:

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);
}

каждый уникальный 'methodName' и параметр будут возвращать уникальный ключ

1 голос
/ 15 ноября 2010

Может быть, я не правильно понял ваш вопрос, но почему бы вам не использовать тот же элемент someInt, что и hash?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...