Я хочу иметь словарь событий, до сих пор у меня естьКак сделать словарь событий?
private Dictionary<T, event Action> dictionaryOfEvents;
можно ли сделать что-то вроде этого?
Я хочу иметь словарь событий, до сих пор у меня естьКак сделать словарь событий?
private Dictionary<T, event Action> dictionaryOfEvents;
можно ли сделать что-то вроде этого?
У вас не может быть словаря событий, хотя вы можете иметь словарь делегатов.
private Dictionary<int, YourDelegate> delegates = new Dictionary<int, YourDelegate>();
где YourDelegate
может быть любым типом делегата.
Я сделаю это, но я буду использовать List
@IanHern Нет необходимости использовать 'List
Пока это истинно, что делегаты могут быть объединены/добавлены, как только они будут вызваны вместе; это может быть только то, что хочется, но, возможно, это не так. Если доступ к ним свободно желателен, то, возможно, List или даже второй, внутренний словарь может найти правильное решение. – TaW
Событие - это не тип, но действие есть. Так, например, вы можете написать:
private void button1_Click(object sender, EventArgs e)
{
// declaration
Dictionary<string, Action> dictionaryOfEvents = new Dictionary<string, Action>();
// test data
dictionaryOfEvents.Add("Test1", delegate() { testMe1(); });
dictionaryOfEvents.Add("Test2", delegate() { testMe2(); });
dictionaryOfEvents.Add("Test3", delegate() { button2_Click(button2, null); });
// usage 1
foreach(string a in dictionaryOfEvents.Keys)
{ Console.Write("Calling " + a + ":"); dictionaryOfEvents[a]();}
// usage 2
foreach(Action a in dictionaryOfEvents.Values) a();
// usage 3
dictionaryOfEvents["test2"]();
}
void testMe1() { Console.WriteLine("One for the Money"); }
void testMe2() { Console.WriteLine("One More for the Road"); }
словарь событий и что? –
Будут ли методы или вызовы, которые вы хотите сохранить? – TaW
Пожалуйста, объясните, почему вы считаете, что вам нужна коллекция событий. Это позволит нам помочь вам решить вашу проблему, а не отвечать на технические вопросы. –