Sto provando a verificare se un determinato tipo è un delegato di azione, indipendentemente dalla quantità di parametri.Verificare se un determinato tipo è un delegato di azione
Il seguente codice è l'unico modo in cui so come farlo.
public static bool IsActionDelegate(this Type source)
{
return source == typeof(Action) ||
source.IsOfGenericType(typeof(Action<>)) ||
source.IsOfGenericType(typeof(Action<,>)) ||
....
source.IsOfGenericType(typeof(Action<,,,,,,,,,,,,,,,>));
}
IsOfGenericType()
è un altro metodo di estensione della miniera, che fa quello che dice, controlla se il tipo è di un dato tipo generico.
Qualche suggerimento migliore?
Non so se la ricerca per nome è tanto male dato che il nome deriva da uno spazio dei nomi di libreria e non da un codice utente. –
Grande intuizione, grazie! Sto cercando di creare un metodo Delegate.CreateDelegate generico. Per esempio. 'CreateDelegate> (owner, method);' È un work in progress quindi non so ancora se sarà possibile. Ma è per questo che devo analizzare il parametro generico e verificare quale tipo di delegato è previsto. –
@Ritch - mi ricorda di controllare il tipo di browser in javascript anziché il controllo delle funzionalità - più tardi è molto più pulito. Forse ingiustificato in questo caso, ma non vorrei toccare il nome se non dovessi assolutamente farlo. – BrokenGlass