Ceci est la fonction qui vérifie qui doit être lié délégué à la méthode: Description is hereLorsque la méthode est appelée sélection qui délèguent est bon pour elle
private static bool IsEquivalent(Delegate d, MethodInfo method)
{
var dm = d.Method;
if (!method.ReturnType.IsAssignableFrom(dm.ReturnType))
return false;
var parameters = method.GetParameters();
var dp = dm.GetParameters();
if (parameters.Length != dp.Length)
return false;
for (int i = 0; i < parameters.Length; i++)
{
//BUG: does not take into account modifiers (like out, ref...)
if (!parameters[i].ParameterType.IsAssignableFrom(dp[i].ParameterType))
return false;
}
return true;
}
Ici, il vérifie que le type de retour de la méthode et Le type de paramètre de méthode est le même que celui de la fonction, pointé par délégué. Mais que se passerait-il s'il y aurait plus d'une fonction avec les mêmes types de paramètres? Comment pouvons-nous traiter dans ce cas? Est-il possible de lire le nom de la fonction, que certains délégué le désigne?