匿名関数パラメーターを受け取るメソッドがあります。この関数のパラメーターは、ローカル変数によって提供されます。
public void DoSomething<T>(Action<T> method) where T : new()
{
T instance = new T();
method.Invoke(instance);
}
クロージャーを作成しないようにしたい。終了すると、ローカル変数はスコープ外にDoSomething<T>
なります。コンパイル時に制約する方法はありますか?
これが私が避けたい状況です:
Foo capturedInstance = null;
DoSomething<Foo>(item => capturedInstance = item);
capturedInstance.Call();