何らかの理由で私はJon Skeetがこれに対する答えを知っているに過ぎないと感じましたが、それは価値があります。なぜコードで書かれたアクションは明示的なパラメータ宣言が必要です
私はコマンドを生成するプロキシとして使用されるこのメソッドスタブを持っています。
public static void SetCommand<T>(string commandName, Action<T> execution)
where T : new()
{
//Omitted unimportant
}
私はこのコードを呼び出す関数を持っていますが、呼び出される方法によって動作が異なります。
私はパラメータのすべてが
Action<ClassDeclarationOptions> test = (t) => { };
SetCommand(GENERATE_CLASS_COMMAND, test);
罰金を解決することができます明示的にアクションを宣言することで、コードを呼び出す場合、私は
public static void GenerateClass(ClassDeclarationOptions classOptions)
{
}
自分の行動を表現する関数を宣言した場合しかし、その後、私は明示的にする必要があり次のように関数に渡すときにパラメータを宣言します。
SetCommand<ClassDeclarationOptions>(GENERATE_CLASS_COMMAND, Commands.GenerateClass);
コンパイラはのは、異なるパラメータの型を取るCommands.GenerateClass
の過負荷とは、例えば、そこだとしましょうメソッド定義から
異なるパラメータタイプをとる 'Commands.GenerateClass'に過負荷があるとすれば、コンパイラはどちらを使用するかを判断する方法がないとします。 – DavidG
@DavidG良い点私はそれを考えなかった。それを投稿して回答があれば、私はそれを正しくマークします –
もちろんその他の理由があるかもしれませんが、これが最初に思い浮かぶのです。 – DavidG