いくつかのクラス メソッド A で、パラメーターとして を受け取るライブラリ メソッド B を呼び出す必要がありIProgress<Object>
ます。
通常、IProgress<Object>
A が存在するクラスの一部として実装してから、「this」をメソッド B に渡します。または、IProgress<Object>
それを正しく実装して処理することのみを目的とする新しいクラスを作成することもできます。 d そのクラスのインスタンスを作成し、それを B に渡します。
しかし、私が本当に望んでいるIProgress<Object>
のは、呼び出し元のコードと実装の間の視覚的な切断が少なくなるように、B を呼び出しているメソッドのすぐ内側に の実装を表示することですIProgress<Object>
。(私の IProgress の実装は、呼び出し元のメソッドのプライベートで共有されていない詳細のようなものであると考えているため、私の実装をIProgress<Object>
おそらく他のクラス全体の完全に別のメソッドにしたくありません)。
私がやろうとしているのは、短い進行状況の処理を定義するラムダを使用し、このラムダを次のように B に渡すことです。
method in class A {
...
Action<Object> Report = (m) => { // do something useful with m };
B(Report)
}
method B(IProgress<Object> reporter) {
reporter.Report(some object)
}
もちろん、これがそのままでは機能しない理由はわかっています。B は実装するオブジェクトを必要IProgress<Object>
としており、代わりに Action オブジェクトを渡しています。
私が達成しようとしていることを達成する方法はありますか? IProgress<Object>
(メソッド A 内に表示される場合、IE は私の実装を持っていますか?