我读过扩展 System.Object 通常是不好的做法,我同意这一点。
但是,我很好奇,如果以下方法被认为是一种有用的扩展方法,还是仍然是不好的做法?
它类似于扩展 System.Object 但不完全一样,
public static R InvokeFunc<T, R>(this T input, Func<T, R> func)
{
return func.Invoke(input);
}
这实质上允许任何对象调用任何将该对象作为参数并返回 R 的函数,无论该函数是否属于该对象。我认为这可以促进一些有趣的“控制反转”,但总体上不确定。
想法?