2009-01-09 3 views
49

Есть ли простой способ использовать отражение, чтобы получить список параметров для делегата, если у вас есть информация о типе?Могу ли я получить подпись делегата C# по типу?

Для примера, если я объявить тип делегата следующим

delegate double FooDelegate (string param, bool condition); 

, а затем получить информацию о типе этого типа делегата следующим

Type delegateType = typeof(FooDelegate); 

Можно ли получить тип возвращаемого (double) и список параметров ({string, bool}) из этого информационного объекта типа?

ответ

90
MethodInfo method = delegateType.GetMethod("Invoke"); 
    Console.WriteLine(method.ReturnType.Name + " (ret)"); 
    foreach (ParameterInfo param in method.GetParameters()) { 
     Console.WriteLine("{0} {1}", param.ParameterType.Name, param.Name); 
    } 
+7

Отлично! Копая глубже, причина в том, что объявление делегата в основном является синтаксическим сахаром для объявления класса, полученного из делегата, с помощью нового метода Invoke, который принимает указанные параметры. Спасибо за помощь. – fastcall

Смежные вопросы