@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 без проверки на все типы?
  • Вопрос задан
  • 185 просмотров
Пригласить эксперта
Ответы на вопрос 2
Mrrl
@Mrrl
Заводчик кардиганов
Попробуйте так:
static bool IsAction(Delegate x){
    return x.Method.ReturnType==typeof(void);
  }

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

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

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