Вызвать Func с неизвестным типом возврата - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь вызвать Func ниже, но я бы хотел ???часть его заполняется в момент вызова.

    public void Publish(string topic)
    {
        ...

        // 'actions' is a List of delegates, defined as List<Delegate>

        for (int i = 0; i < actions.Count; i++)
        {
            ((Func<???>)actions[i])(); // Invokation
        }

        ...
    }

Действия добавляются так:

    public void Subscribe<T>(string topic, Func<T> action)
    {
        ...

        actions.Add(action);

        ...
    }

Дело в том, что я не знаю, что ???будет (отсюда и мой вопрос).Может быть, логическое, string, int, ... Как мне это сделать?Могу ли я как-то основать это на типе возвращаемого действия, которое нужно вызвать?

1 Ответ

0 голосов
/ 05 октября 2018

Итак, в конце концов удалось решить эту проблему, используя комментарий Лассе Вогстера Карлсена выше.Поэтому вместо

((Func<???>)actions[i])();

я вызвал действие, написав

actions[i].DynamicInvoke(null);

, который правильно вызвал делегата.

...