Задать вопрос
@iRumba

Как определить возвращает ли экземпляр Delegate значение?

Есть Dictionary
я получаю определенный theGuid, и должен выполнить то что скрывается в Dictionary под этим гуидом и вернуть значение в случае, если оно требуется. Так вот, как узнать, требуется ли значение? Первое что приходит на ум - try...catch, но как то не красиво это.
Типа так
if (theDictionary.ContainsKey(theGuid))
{
dynamic FuncOrMethod = theDictionary[theGuid];
try
{
object o = FuncOrMethod(params);
// далее еще один трай будет на выполнение без возврата значений для проверки того, правильно ли переданы параметры
}
}


Еще как вариант проверять тип FuncOrMethod на все виды Action<> и Func<> (а их по 16 каждого, то есть в блоке свитч будет 32 условия, что тоже на мой взгляд некрасиво)

А можно ли как то узнать, принадлежит ли FuncOrMethod к Action или к Func без проверки на все типы?
  • Вопрос задан
  • 188 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 2
Mrrl
@Mrrl
Заводчик кардиганов
Попробуйте так:
static bool IsAction(Delegate x){
    return x.Method.ReturnType==typeof(void);
  }

Правда, я не все возможные делегаты проверял.
Ответ написан
Комментировать
ImmortalCAT
@ImmortalCAT
C# loving
а если эти 32 условия сгруппировать по схожей семантике? либо хотя бы разбить?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы