Здравствуйте!
Возникла проблема.
Хочется передать ссылку на метод в другой метод указывая при этом аргументы в передаваемый метод а в методе-получателе иметь возможность различать все переданные туда методы по какому-то признаку, который генерируется на основе данных, которые может предоставить делегат Action в примере ниже.
Очень не хочется для этого вместе с методом еще и передавать туда стринг типа ключ. Хотелось бы ключ генерить внутри и чтобы он всегда был одинаков для одного и того же полученного делегата и совершенно разный даже для похожих но все равно разных. Мне наверное нужно смотреть в сторону хэшей?
class Sender
{
public void Main()
{
Receiver.AddMethod(() => SomeMethod("test"));
}
public void SomeMethod(string str)
{
//...
}
}
class Receiver
{
private static Dictionary<string, Action> Methods = new Dictionary<string, Action>();
public static void AddMethod(Action method)
{
//Тут надо некий уникальный идентификатор полученного метода
//Псевдокод: Methods.Add(method.UniqueID, method);
}
}
Не подскажите каким образом это можно достигнуть?
P.S. У Action есть такая штука как Method а у него Name которые подходят для случая если я буду метод в класс Receiver передавать не оборачивая в Action а в виде MethodGroup. Но к сожалению в таком случае я теряю возможность указывать параметры метода, который отправляю. А если я оборачиваю метод в Action - то я могу указать параметры, но в методе получателе имя уже не соответствует методу, который я хотел передать а соотествует методу, в котором происходит передача (то есть Main в примере).