System.Object を拡張することは通常悪い習慣であると読んだことがありますが、これには同意します。
私は興味がありますが、以下が有用な拡張メソッドと見なされるか、それともまだ悪い習慣ですか?
System.Object の拡張に似ていますが、厳密には異なります。
public static R InvokeFunc<T, R>(this T input, Func<T, R> func)
{
return func.Invoke(input);
}
これにより、関数がオブジェクトに属しているかどうかに関係なく、オブジェクトをパラメーターとして取り、R を返す任意の関数を任意のオブジェクトで呼び出すことができます。これにより、興味深い「制御の反転」が容易になると思いますが、全体的にはわかりません。
考え?