パラメータの量に関係なく、指定された型がアクションデリゲートであるかどうかをチェックしようとしています。特定の型がアクションデリゲートであるかどうかを確認する
次のコードは、これを行う方法を知っている唯一の方法です。
public static bool IsActionDelegate(this Type source)
{
return source == typeof(Action) ||
source.IsOfGenericType(typeof(Action<>)) ||
source.IsOfGenericType(typeof(Action<,>)) ||
....
source.IsOfGenericType(typeof(Action<,,,,,,,,,,,,,,,>));
}
IsOfGenericType()
それが言うん鉱山の別の拡張方法、である、それはタイプが指定されたジェネリック型であるかどうかをチェックします。
もっと良い提案がありますか?
名前で検索することは、ライブラリ名空間でありユーザコードではないことを考えると、それほど悪くはありません。 –
すばらしい洞察力、ありがとう!私は汎用のDelegate.CreateDelegateメソッドを作成しようとしています。例えば。 'CreateDelegate>(所有者、メソッド);'進行中の作業なので、可能かどうかはまだ分かりません。しかし、そのため、ジェネリックパラメータを分析し、どのタイプのデリゲートが期待されているかを確認する必要があります。 –
@Ritch - 機能チェックの代わりにブラウザのタイプをjavascriptでチェックすることを思い出させます。後の方がはるかにクリーンです。この場合は不公平になるかもしれませんが、絶対にしなければ名前に触れません。 – BrokenGlass